自动属性

Automatic properties

我想知道当您创建 Automatic 属性 并在 main() 方法中调用 set 以获得随机值,value 存储在哪里?
如本例所示:



    class Program
        {
            static void Main(string[] args)
            {
                Example W = new Example();

                W.Num = 10;
                Console.WriteLine("{0}", W.Num);

                Console.WriteLine("{0}", W.getNum());
            }
        }



    class Example
            {
                private int num;

                public int Num { get; set; }

                public int getNum() { return num; }
            }

为什么输出是:
10
0

因为您要返回 num,而不是 Num。而num没有初始化,所以这个值为0。

这里没什么异常。

当你打电话时

Example W = new Example();

然后最初 num = 0 和 Num = 0;

您分配的是 Num,而不是 num。

num 在你的 Example class 是多余的。

如果您在将自动 属性 初始化器添加到 c# 之前编写此代码,它看起来像这样:

private int num;

 public int Num 
 { 
    get{ return num;}
    set{ num = value;}
}

写publicpublic int Num { get; set; }在幕后本质上是一样的。无需实现 getNum()(如 Java),因为这等同于 int a = w.Num;

当 getter 或 setter 不需要额外的逻辑时,自动实现的属性使代码更清晰。编译器实际上为自动实现的 属性 生成了一个支持字段,但是这个支持字段在您的代码中是不可见的。

在您的示例中,num 字段与 Num 属性 之间没有任何联系,因此没有理由更改 num

如果使用 new 关键字,您将创建新实例 class 并重新创建所有对象。

例如;

    class Program
    {
        static void Main(string[] args)
        {
            Example W = new Example();

            W.Num = 10;

            Example W1 = new Example();

            Console.WriteLine("{0}", W.Num);  //10
            Console.WriteLine("{0}", W1.Num); //0
        }
    }

这只是您的答案的信息;你返回不同的变量。你没有设置它们。