我怎么知道我需要使用以下哪一项:
public int Dollar { get; set };
public int Dollar { get; private set };
private int Dollar { get; set };
private int Dollar { get; private set };
当我编程时,我总是问自己应该使用哪一个。有谁能解释我怎么知道我需要使用哪一个?
答案 0 :(得分:8)
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'访问者必须更多 限制性比财产或指数
答案 1 :(得分:3)
您班级以外的任何其他代码是否需要能够访问Dollar
?如果不是,那么你应该使用:
private int Dollar { get; set; }
注意,如果属性是私有的,那么将setter设置为private是没有意义的。您可能还会质疑是否需要一个属性以及私有字段是否更合适。
如果其他代码只需要读访问权,那么:
public int Dollar { get; private set; }
如果其他代码需要能够同时读取和设置Dollar
:
public int Dollar { get; set; }
如果您需要派生类来访问它(但不是非派生类),请将private
替换为protected
答案 2 :(得分:2)
见下面的评论
1) public int Dollar { get; set; }
您可以从应用程序的任何位置访问此属性。获取并设置两者都可用。
2) public int Dollar { get; private set; }
您可以从应用程序的任何位置访问此属性,但只有Get可用。您无法设置属性值。
3) private int Dollar { get; set; }
您只能在课程内访问此内容。
4) private int Dollar { get; private set; }
语法错误。
答案 3 :(得分:1)
正如其他人所说,这取决于使用情况。
如果你非常富有,请将你的美元私有化,否则下层阶级会嫉妒你的财产。 :)
答案 4 :(得分:0)
如果您使用Dollar,您需要将字段公开,那么请公开。否则,如果您仅在其定义的类中访问Dollar,请使用private。
我的经验法则是将一切都设为私有,除非有一些要求迫使该领域公开。
答案 5 :(得分:0)
如果它仅在内部使用 - 将其设为私有(或仅为私有变量,而非属性)。
如果它是从外部读取的,但只能在内部写入,请使用私人设置器公开。
否则,将其公开。