C# 为什么我的财产的支持字段不改变其价值? namespace tutor4 { 一班 { int _num=2; 公共整数 { 得到 { 返回_num; } 设置 { _num=num; } } public void incrementFunction() { num++; Console.WriteLine(“μnum的值为”+num); } } } 命名空间tutor4 { 班级计划 { 静态void Main(字符串[]参数) { Class1 ClassObj=新的Class1(); 对于(int i=0;i
您的C# 为什么我的财产的支持字段不改变其价值? namespace tutor4 { 一班 { int _num=2; 公共整数 { 得到 { 返回_num; } 设置 { _num=num; } } public void incrementFunction() { num++; Console.WriteLine(“μnum的值为”+num); } } } 命名空间tutor4 { 班级计划 { 静态void Main(字符串[]参数) { Class1 ClassObj=新的Class1(); 对于(int i=0;i,c#,properties,C#,Properties,您的num属性的setter错误 它应该是而不是 namespace tutor4 { class Class1 { int _num = 2; public int num { get { return _num; } set { _num = nu
num
属性的setter错误
它应该是而不是
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();
}
}
因为在这种情况下,它什么也不做(将_num设置回它的值,因为num
的getter返回_num
,所以此行相当于_num=_num
)
应该是
set
{
_num = num;
}
MSDN关于关键字的说明:
上下文关键字值通常在set访问器中使用
属性声明。它类似于
方法。单词value引用客户端代码的值
正在尝试分配给属性
还要注意:您的num
属性只是类的\u num
字段的简单包装器。如果您不需要此属性的getter和setter中的一些复杂逻辑,可以将其更改为如下属性:
set
{
_num = value;
}
在C#version 6之前,您应该在类构造函数中为自动实现的属性指定默认值
在C#version 6(尚未发布,应在今年夏天提供)中,您将能够在声明中为自动实现的属性指定默认值:
class Class1
{
public int num { get; set;}
public Class1
{
num = 2;
}
}
set\u num=num;
,因为您将其设置为自身,所以将其设置为value
您正在反复重置相同的值!您可能应该解释一下value
是什么,因为初学者可能不太清楚。
public int num { get; set;} = 2;