如何在C#中为数组元素使用get和set

本文关键字:get set 数组元素 | 更新日期: 2023-09-27 18:00:51

我有以下类:

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。我不明白为什么"要么得到,要么设置"似乎不起作用。如果我用0以外的值初始化数组元素,那么输出将是这样的。data[i].testint=int.Parse(Console.ReadLine(((;似乎不起作用。我该怎么做这样的事?

如何在C#中为数组元素使用get和set

将设置方法更改为:

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

您的setter不正确。应该是:

 set { i = value; }

你有:

 set { i = testint; }

它只触发getter,getter来自i,所以最后您的setter正在执行i = i

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

在您的案例中,您没有应用该值。

更新

此外,在定义getter和setter时,不应使用分号。那么,代码看起来是这样的:

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

我在这段代码中看到两个错误:

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

顶部的testint后面不应该有分号。此外,set需要使用value进行分配,如下所示:

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

将您的setter更改为:

set { i = value; }

值对应于您发送来设置变量的值。

这里有一个简单的方法。

public int TestInt {get; set;}