我来自Java,我学会了从不设置变量公开。始终将变量设为私有,并使其可以通过setter和getter方法进行访问。
我在最后几天开始使用C#,实际上我遇到了这个问题:
String Name { get; set; }
从其他课程中,我无法访问变量" Name"
所以我认为这可能是一个很好的解决方案:
String Name { public get; public set; }
但是......不起作用。
我必须公开每个变量吗?
答案 0 :(得分:6)
您正在定义属性,而不是字段。这相当于在Java中创建getName
和setName
以及相关的私有字段。
您使用的语法是执行此操作的简写。
要使其可访问,请将该属性设置为public。
public String Name { get; set; }
如果您不希望设置方法可访问,则可以将其标记为私有:
public String Name { get; private set; }
这将使编译器创建与以下内容等效的代码:
private String _name;
public String GetName()
{
return _name;
}
private void SetName(String name)
{
_name = name;
}
答案 1 :(得分:4)
您需要设置属性public
public String Name { get; set; }
默认情况下,班级成员为private
。
答案 2 :(得分:1)
这些是属性,而不是字段。 C#中的属性与Java中的getter和setter方法相同。要公开它们,您应该public string Name { get; set;}
。
一般来说,你的课程中不应该有太多这些,因为它打破了封装,并且是一个糟糕设计的症状。
答案 3 :(得分:0)
@ Selman22已经给了你一个简洁而准确的答案,并延伸了@Mike Christensen的评论。 (基本上,你在谈论Properties
)。您还可以考虑使用C#中的一个选项来使用Internal
访问修饰符,应用于只能在同一程序集中的文件中访问的类型或成员,因此外部世界不太可见。
最好的问候,