不能在主类中声明readonly属性?

时间:2017-02-17 20:07:35

标签: c#

public class Program
{
    public readonly string val; // THIS IS AN ERROR?
    static void Main(string[] args)
    {
        // get parameter value
        if (args.Length>0)
        {
            val = args[0];

你能告诉我们为什么我收到错误编译吗?将参数值放在const或readonly变量中的最佳方法是什么?

4 个答案:

答案 0 :(得分:4)

这里有两点需要注意:

  • 只读字段分配只能作为声明的一部分 或者在同一类的构造函数中。

  • 您的字段是非静态的,而您的主要功能是静态的。您不能在静态上下文中设置非静态变量。非静态字段需要该类的实例。

我建议您将字段标记为静态,并为您要声明的变量指定值

应运行以下代码

public class Program
{
    public static string val; // THIS IS AN ERROR?
    static void Main(string[] args)
    {
        // get parameter value
        if (args.Length>0)
        {
           Program.val = args[0];

答案 1 :(得分:1)

它与它所在的类无关。您只需要在声明或构造函数中使用值初始化它。 (因为它是readonly,你以后不能分配它。)

public readonly string val = "myString";

答案 2 :(得分:0)

您必须立即分配它的值。否则它怎么可能只读?"

答案 3 :(得分:0)

必须将readonly分配给声明或该类的构造函数内部。这就是它只读的原因。

也许你最好的选择就是这个

public string val {get; private set;}

这样它只能在Program类中设置。