看来我在理解上遇到了相当大的缺乏。我知道最好的做法是在类中使用私有变量并通过所述类外部的公共 getter 访问它。现在,当使用 C# 的默认 getter 方法 ( private string Image { get; }) 时,我无法访问Image此类 ( Console.WriteLine(items[i].Image);) 之外的变量。
虽然我可以编写一个自定义的公共 getter,但这似乎很荒谬,因为在私有变量上有一个除了返回变量之外什么也不做的私有 getter 似乎完全多余,因此让我觉得我错过了一些东西。
当你声明
private string Image { get; }
Run Code Online (Sandbox Code Playgroud)
您创建了一个私有只读属性,这意味着 getter 和 setter 都是私有的。此外,在构造函数/初始值设定项之外无法访问 setter。
将其更改为
public string Image { get; }
Run Code Online (Sandbox Code Playgroud)
会给你一个公共只读属性。这大致对应如下的安排:
在 Java 中,我将创建一个私有变量和一个公共 getter。这实际上是 C# 中的版本吗?
Java 中的等效项是私有最终字段,因为 C# 限制对构造函数外部的 setter 的访问。
*实际上,只读属性没有setter。赋值直接写入属性的后备存储,无需通过 setter。如果您尝试通过反射编写属性,则拥有只能从构造函数访问的私有 setter 和根本没有 setter 之间的区别就变得很重要。
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |