C#属性获取私有集

时间:2013-06-17 18:12:04

标签: c# forms class

我怎么知道我需要使用以下哪一项:

public int Dollar { get; set };
public int Dollar { get; private set };
private int Dollar { get; set };
private int Dollar { get; private set };

当我编程时,我总是问自己应该使用哪一个。有谁能解释我怎么知道我需要使用哪一个?

6 个答案:

答案 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)

如果它仅在内部使用 - 将其设为私有(或仅为私有变量,而非属性)。

如果它是从外部读取的,但只能在内部写入,请使用私人设置器公开。

否则,将其公开。