namespace tutor4
{
class Class1
{
int _num = 2;
public int num
{
get
{
return _num;
}
set
{
_num = num;
}
}
public void incrementFunction()
{
num++;
Console.WriteLine("The value of _num is "+ num);
}
}
}
namespace tutor4
{
class Program
{
static void Main(string[] args)
{
Class1 class1Obj = new Class1();
for(int i=0;i<7;i++)
class1Obj.incrementFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么_num不增加,有人可以解释一下吗?
And*_*yev 16
你的num财产制定者是错的.
它不应该
set
{
_num = num;
}
Run Code Online (Sandbox Code Playgroud)
因为在这种情况下它什么也不做(将_num设置回其值,因为getter num返回,_num所以此行相当于_num = _num)
它应该是
set
{
_num = value;
}
Run Code Online (Sandbox Code Playgroud)
关于value关键字的MSDN说明:
contextual关键字值在普通属性声明中的set访问器中使用.它类似于方法的输入参数.单词值引用客户端代码尝试分配给属性的值
另请注意:您的num属性只是_num类字段的简单包装.如果你不需要在getter和setter中为这个属性提供一些复杂的逻辑 - 你可以将它改为自动实现的属性,如下所示:
class Class1
{
public int num { get; set;}
public Class1
{
num = 2;
}
}
Run Code Online (Sandbox Code Playgroud)
在C#版本6之前,您应该在类构造函数中为自动实现的属性指定默认值.
在C#版本6(尚未发布,今年夏天应该可用)中,您将能够在声明中为默认值指定自动实现的属性:
public int num { get; set;} = 2;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |