我如何知道我需要使用以下哪一项:
public int Dollar { get; set };
public int Dollar { get; private set };
private int Dollar { get; set };
private int Dollar { get; private set };
当我编程时,我总是问自己应该使用哪一个。谁能解释我如何知道我需要使用哪一个?
public int Dollar { get; set };
可以在整个应用程序中检索和设置美元
public int Dollar { get; private set };
Dollar 可以在整个应用程序中检索,但只能从包含它的类中设置
private int Dollar { get; set };
只有包含 Dollar 的类才能使用 Dollar
编辑
注意:如果知道如何实现公共字段,也可以在应用程序之外访问公共字段。Internal
将使其只有应用程序才能使用该属性
编辑 2
正如其他人指出的那样,以下是编译器错误。
private int Dollar { get; private set };
'ConsoleApplication1.Program.Dollar.set' 访问器的可访问性修饰符必须比属性或索引器更具限制性
您班级之外的任何其他代码是否需要能够访问Dollar
?如果不是,那么您应该使用:
private int Dollar { get; set; }
请注意,如果属性是私有的,则将 setter 设置为私有是没有意义的。您可能还会质疑您是否需要一个属性,以及私有字段是否更合适。
如果其他代码仅需要读取权限,则:
public int Dollar { get; private set; }
如果其他代码需要能够读取和设置Dollar
:
public int Dollar { get; set; }
如果您需要派生类能够访问它(但不是非派生类),请替换private
为protected
请参阅下面的评论
1) public int Dollar { get; set; }
您可以从应用程序中的任何位置访问此属性。Get 和 Set 都可用。
2) public int Dollar { get; private set; }
您可以从应用程序中的任何位置访问此属性,但只有 Get 可用。您不能设置属性值。
3) private int Dollar { get; set; }
您只能在课堂内访问它。
4) private int Dollar { get; private set; }
语法错误。
正如其他人所说,这取决于使用情况。
如果您非常富有,请将您的美元私有化,否则下层阶级会嫉妒您的财产。:)
如果您使用 Dollar 需要公开这些字段,请公开。否则,如果您仅在其定义的类中访问 Dollar,请使用 private。
我的经验法则是将所有内容都设为私有,除非有某种需求迫使该领域公开。
如果它仅在内部使用 - 将其设为私有(或只是私有变量,而不是属性)。
如果它是从外部读取但只能在内部写入,请使用私有设置器将其公开。
否则,将其公开。