我的理解似乎相当缺乏。我理解最好在类中使用私有变量,并通过该类外部的公共getter访问它。现在使用C#的默认getter方法(private string Image { get; }
)时,我无法访问此类之外的Image
变量(Console.WriteLine(items[i].Image);
)。
虽然我可以编写一个自定义的公共getter,但这看起来很荒谬,因为私有变量上的私有getter除了返回变量之外什么也没做什么似乎完全多余,因此让我觉得我错过了什么。
答案 0 :(得分:3)
宣布
时private string Image { get; }
你创建了一个私有的只读属性,这意味着getter和setter都是私有的。此外,在构造函数/初始化器之外无法访问setter。
将其更改为
public string Image { get; }
会给你一个公开的只读属性。这大致对应于以下安排:
在Java中,我将创建一个私有变量和一个公共getter。这实际上是C#中的版本吗?
Java中的等价物将是私有的final字段,因为C#限制了对构造函数外部的setter的访问。
* 实际上,没有只读属性的setter。分配直接写入属性的后备存储,而无需通过setter。如果您尝试通过反射编写属性,那么让私有setter只能从构造函数访问并且根本没有setter之间的区别变得很重要。
答案 1 :(得分:0)
要么声明私有成员:
private string _image;
或公共财产。声明属性时,getter和setter都有自己的隐私修饰符(即protected / public / private / none)。例如:
public string Image { get; protected set; }