0

我有以下课程:

public class test
{
    private int i;
    public test(int in)
    {
        i = in;
    }
    public int testint;
    {
        get { return i; }
        set { i = testint; }
    }
}

以及以下代码:

test[] data = new test[3];
for(int j = 0; j < 3; j++)
{
    data[i] = new test(0);
    data[i].testint = int.Parse(Console.ReadLine());
}
Console.WriteLine(test[0].testint);
Console.WriteLine(test[1].testint);
Console.WriteLine(test[2].testint);

当我运行这个程序并输入 1、2、3 作为输入时,输出是 0、0、0。我不明白为什么 get 或 set 似乎不起作用。如果我用 0 以外的值初始化数组元素,则输出将是那个值。data[i].testint = int.Parse(Console.ReadLine()); 似乎没有工作。我将如何去做这样的事情?

4

5 回答 5

3

I see two errors in this code:

public int testint;
{
    get { return i; }
    set { i = testint; }
}

There should be no semicolon after testint at the top. Also, set needs to assign using value, like this:

public int testint
{
    get { return i; }
    set { i = value; }
}
于 2013-02-22T17:40:36.480 回答
3

将 set 方法更改为:

public int testint
{
   get { return i; }
   set { i = value; }
}
于 2013-02-22T17:42:33.747 回答
3

你的二传手不正确。它应该是:

 set { i = value; }

你有过:

 set { i = testint; }

这只会触发 getter,它来自i,所以最后你的 setter 正在做i = i

在 setter 中,value关键字包含属性的新候选值。value的类型等于属性的。我说候选值是因为您可以验证它并选择不应用它。

在您的情况下,您没有应用该值。

更新

此外,在定义 getter 和 setter 时,不应使用分号。那么,代码将如下所示:

public int testint
{
    get { return i; }
    set { i = value; }
}
于 2013-02-22T17:40:05.557 回答
2

Change your setter to say:

set { i = value; }

value corresponds to the value you send to set the variable.

于 2013-02-22T17:40:40.017 回答
1

这是简单的方法。

public int TestInt {get; set;}
于 2013-02-22T17:42:42.373 回答