C# 控制台程序,其中包含一个常量静态字段,用于在输出主方法中显示文本
Posted
技术标签:
【中文标题】C# 控制台程序,其中包含一个常量静态字段,用于在输出主方法中显示文本【英文标题】:C# Console program that contains a constant static field to display text in the output main method 【发布时间】:2012-07-01 18:40:19 【问题描述】:在 MicroSoft Visual Studio 2010 中使用 C# 作为控制台程序,在你们的帮助下,我对此进行了一些更改,并且该控制台程序运行正常;但是我需要实现一个常量静态字段,该字段将在 main 方法的输出部分显示座右铭“遵守女童子军法”。我知道这一定很简单,所以请多多包涵。当我在低音类中包含 public static const string Motto = "To Obey the Girl Scout Law" 时,我收到一条错误消息 - 常量 'DemoScouts.GirlScout.Motto' 不能是静态的。以下是本项目的完整代码:
公开课 GirlScout
public static const string Motto = "To Obey the Girl Scout Law";
public static string scoutName;
public static string enterName()
return scoutName;
public static int duesOwed;
public static int enterAmount()
return duesOwed;
public static int troopNumber;
public static int enterNumber()
return troopNumber;
class MainClass : GirlScout
static void Main()
Console.WriteLine();
Console.Write("Enter the Girl Scout's name: ");
GirlScout.scoutName = Console.ReadLine();
Console.WriteLine();
Console.Write("Enter their Troop Number: ");
string n = Console.ReadLine();
GirlScout.troopNumber = Int32.Parse(n);
GirlScout.enterNumber();
Console.WriteLine();
Console.Write("Enter the amount they Owe in Dues: $");
string d = Console.ReadLine();
GirlScout.duesOwed = Int32.Parse(d);
GirlScout.enterAmount();
Console.WriteLine();
// Seperate the input from the output:
Console.WriteLine();
Console.WriteLine(GirlScout.Motto);
Console.WriteLine("-----------------------------------------------");
Console.WriteLine();
// Display the new information:
Console.WriteLine("The name of the Girl Scout is: 0", GirlScout.scoutName);
Console.WriteLine("The troop Number of the Girl Scout is: 0", GirlScout.troopNumber);
Console.WriteLine("The amount of Dues Owed by this Girl Scout is: 0", GirlScout.duesOwed);
// Keep the console window open in debug mode.
Console.ReadKey();
我们将不胜感激任何和所有建议。
【问题讨论】:
【参考方案1】:您没有对用户输入的名称进行任何操作:
Console.Write("Enter the Girl Scout's name: ");
Console.ReadLine();
应该是这样的:
Console.Write("Enter the Girl Scout's name: ");
GirlScout.scoutName = Console.ReadLine();
您还需要将scoutName
的类型更改为string
而不是int
。
您还应该重新设计您的课程。使用实例属性而不是静态字段。
public class GirlScout
public string Motto get; set;
public string ScoutName get; set;
public int DuesOwed get; set;
public int TroopNumber get; set;
【讨论】:
还有一个简单的问题,我怎样才能将“遵守女童子军法”的座右铭作为一个常量静态字段并让它在 main 方法的输出之前自动显示? 我也是这么想的,但是这个任务要求这个?我只是使用一个常量字符串来运行它。感谢您的意见。 根据定义,一个 const 字符串是静态的;它并不特定于类的实例。 Eric Lippert 在他的博客上详细讨论了这一点:Consts are already static。【参考方案2】:您不会像存储其他数据那样存储用户输入的名称。
【讨论】:
【参考方案3】:我没有看到分配给 GirlScout.scoutName
...
旁注:请考虑不要使用静态属性(除非它是分配的目标)。要么创建具有普通属性的对象,要么根本不使用它们......
【讨论】:
附注中的好建议【参考方案4】:好吧,您从未初始化 scoutName 的值,那么您希望打印什么?
我认为您缺少这样的一行代码:
GirlScout.scoutName = Console.ReadLine();
不过,我不得不说,你的课程设计得很糟糕。你有公共数据成员,你的方法似乎没有目的或意义——你应该重温封装,并使你的变量私有。使用方法来更改/获取它们的值。
如果您需要任何帮助,请在 cmets 或其他问题中提问。
【讨论】:
嘿,Daniel,我将如何使用一个常量静态字段,从该字段可以在 main 方法的输出中显示座右铭“To Obey the Girl Scout Law”。 public static const string Motto = "To Obey.."; Console.WriteLine(GirlsScout.Motto); 我收到错误消息:error#1 - Invalid token '('in class, struct, or interface member declaration error#2 - Invalid token ')'in class, struct, or interface member声明错误#3 - 'System.Console.WriteLine(string, params object[])' 是“方法”,但用作“类型”,错误 #4 - 'DemoScouts.GirlScout.Motto' 是“字段”但用作“类型” 上面的代码我还有,只是不知道你刚才提供给我的代码会放在哪里。 哦.. 第一行 (The public static const string Motto = "..") 进入你的类,而 Console.WriteLine 行进入 Main 方法。以上是关于C# 控制台程序,其中包含一个常量静态字段,用于在输出主方法中显示文本的主要内容,如果未能解决你的问题,请参考以下文章