自动属性

时间:2015-10-17 15:37:46

标签: c# automatic-properties

我想知道当您创建自动属性时 并调用set方法中的main()获取随机值,其中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

5 个答案:

答案 0 :(得分:1)

因为您要返回num,而不是Num。并且num未初始化,因此该值为0.

答案 1 :(得分:0)

这里没有异常。

致电时

Example W = new Example();

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

你分配了Num,而不是num。

答案 2 :(得分:0)

<{1}}课程中的

<div ng-app="app"> {{attribute = 'hello world';}} <div d-isolated-works prop="attribute"></div> <div d-isolated prop="attribute"></div> </div> 是多余的。

如果您在将自动属性初始化程序添加到c#之前编写了此文件,它将如下所示:

num

写公共Example在幕后基本上是一样的。没有必要实现private int num; public int Num { get{ return num;} set{ num = value;} } (如Java),因为这相当于public int Num { get; set; }

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

如果使用from PIL import Image, ImageDraw points = ( (30, 40), (120, 60), (110, 90), (20, 110), (30, 40), ) im = Image.new("RGB", (130, 120)) dr = ImageDraw.Draw(im) dr.line(points, fill="red", width=9) for point in points: dr.ellipse((point[0] - 4, point[1] - 4, point[0] + 4, point[1] + 4), fill="red") im.save("polygon.png") 关键字,则为您的类创建新实例并重新创建所有对象。

例如;

new

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