问题描述
我已经尝试了几个小时来修复此代码,但我似乎似乎无法理解问题,我将带有get和set的变量存储在包含案例的公共内部。我要尝试的是使用下面的此菜单存储变量。
{
Volume vol = new Volume();
Console.WriteLine("\n ---------------\n" +
" |>>>>> Control Panel <<<<<|\n" +
" ---------------" +
"\n\n |===========================================|\n" +
"\n Press key...\n" +
"\n [Q] to Change M Main 1 Volume\n" +
" [W] to Change M Main 2 Volume\n" +
" [E] to Change Host Volume\n" +
" [R] to Change Guest Volume\n" +
" [T] to Change Speaker Volume\n" +
" [Y] to Change Lights\n" +
" [G] to exit\n" +
"\n |===========================================|");
ConsoleKeyInfo inputuser = Console.ReadKey(true);
switch (inputuser.Key)
{
case ConsoleKey.Q:
{
try
{
Console.WriteLine("| | |Input Volume percentege from 0-100 %| | |");
vol.MainMic1 = int.Parse(Console.ReadLine());
if (vol.MainMic1 > 100 || vol.MainMic1 < 0)
{
Console.WriteLine("Invalid Number");
Console.ReadKey();
}
else if (vol.MainMic1 == 0 || vol.MainMic1 <= 100)
Console.WriteLine(vol.MainMic1);
Console.ReadKey(); ```
之所以在当前方法中设置它,是因为我尝试了它,但是没有在调用它的方法中使用它,当我在控制台中调用它时,它会返回其原始值或0
public void ShowVolume()
{
Volume voll = new Volume();
Console.Clear();
Console.WriteLine("|====== ====== ====== ====== ====== ====== ======|\n" +
"\n >>>>> Lights and Volume settings <<<<<\n" +
"\nMain 1(Peterson) Microphone currently at: {0}% volume.\n" +
"Co-Speaker(Weiss) Microphone currently at: {1}% volume.\n" +
"Host Microphone currently at: {2}% volume.\n" +
"Guest Microphone currently at: {3}% volume.\n" +
"Quad-Speakers currently at: {4}% volume.\n" +
"Lights are at: {5}% power.\n" +
"\n|====== ====== ====== ====== ====== ====== ======|",voll.MainMic1,voll.MainMic2,voll.MainMic3,voll.GuestMic,voll.QuadSpeaker,voll.Lighting);
Console.ReadKey();
我无法弄清楚问题,我可以运行所有内容,但不能打印出所要询问的内容,这里是否存在某种情况/方法阻塞,我不理解?
here is class with get/set
public class Volume
{
private int o_mainmic1 = 50;
private int o_mainmic2 = 50;
private int o_mainmic3 = 50;
private int o_guestmic = 30;
private int o_quadspeaker = 30;
private int o_lighting = 30;
public int MainMic1
{
get
{
return o_mainmic1;
}
set
{
o_mainmic1 = value;
}
}
这里有一些Gyazo图片,如果对您有帮助,我感谢在这里获得的任何帮助,
https://gyazo.com/d241e1f8db821ba38415ecf1c57fb3f9
https://gyazo.com/35f31140568794aa41ee74c8ead2296a
https://gyazo.com/1359b4a291baa385b8dcee586a3b97ea
https://gyazo.com/1ce9e237fdd56a7f1a40dabd24c50b5a```
解决方法
步骤1: 将音量设为静态:
public static class Volume
{
private int o_mainmic1 = 50;
private int o_mainmic2 = 50;
private int o_mainmic3 = 50;
private int o_guestmic = 30;
private int o_quadspeaker = 30;
private int o_lighting = 30;
public int MainMic1
{
get
{
return o_mainmic1;
}
set
{
o_mainmic1 = value;
}
}
第2步:将vol
或voll
的每次提及重命名为Volume
,并且不要初始化Volume类。
[第一个代码示例]
{
Volume vol = new Volume(); // Delete this,this is not needed anymore since Volume is a static class.
/* I skipped over the Console.WriteLine stuff,though you need it.
*/
ConsoleKeyInfo inputuser = Console.ReadKey(true);
switch (inputuser.Key)
{
case ConsoleKey.Q:
{
try
{
Console.WriteLine("| | |Input Volume percentege from 0-100 %| | |");
Volume.MainMic1 = int.Parse(Console.ReadLine());
if (Volume.MainMic1 > 100 || Volume.MainMic1 < 0)
{
Console.WriteLine("Invalid Number");
Console.ReadKey();
}
else if (Volume.MainMic1 == 0 || Volume.MainMic1 <= 100)
{
Console.WriteLine(vol.MainMic1);
Console.ReadKey();
}
[第二个代码示例]
public void ShowVolume()
{
Volume voll = new Volume(); //Again,delete this.
Console.Clear();
Console.WriteLine("|====== ====== ====== ====== ====== ====== ======|\n" +
"\n >>>>> Lights and Volume settings <<<<<\n" +
"\nMain 1(Peterson) Microphone currently at: {0}% volume.\n" +
"Co-Speaker(Weiss) Microphone currently at: {1}% volume.\n" +
"Host Microphone currently at: {2}% volume.\n" +
"Guest Microphone currently at: {3}% volume.\n" +
"Quad-Speakers currently at: {4}% volume.\n" +
"Lights are at: {5}% power.\n" +
"\n|====== ====== ====== ====== ====== ====== ======|",Volume.MainMic1,Volume.MainMic2,Volume.MainMic3,Volume.GuestMic,Volume.QuadSpeaker,Volume.Lighting);
Console.ReadKey();