我想知道当您创建自动属性时
并调用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
答案 0 :(得分:1)
因为您要返回num
,而不是Num
。并且num
未初始化,因此该值为0.
答案 1 :(得分:0)
这里没有异常。
致电时
Example W = new Example();
然后最初num = 0和Num = 0;
你分配了Num,而不是num。
答案 2 :(得分:0)
<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
这只是你的答案的信息;你返回不同的变量。你没有设置它们。