Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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;