-2

我如何知道我需要使用以下哪一项:

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

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

4

6 回答 6

9
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' 访问器的可访问性修饰符必须比属性或索引器更具限制性

于 2013-06-17T18:15:01.720 回答
3

您班级之外的任何其他代码是否需要能够访问Dollar?如果不是,那么您应该使用:

private int Dollar { get; set; }     

请注意,如果属性是私有的,则将 setter 设置为私有是没有意义的。您可能还会质疑您是否需要一个属性,以及私有字段是否更合适。

如果其他代码仅需要读取权限,则:

public int Dollar { get; private set; }

如果其他代码需要能够读取和设置Dollar

public int Dollar { get; set; }

如果您需要派生类能够访问它(但不是非派生类),请替换privateprotected

于 2013-06-17T18:15:26.867 回答
2

请参阅下面的评论

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; }

语法错误。

于 2013-06-17T18:22:21.157 回答
1

正如其他人所说,这取决于使用情况。

如果您非常富有,请将您的美元私有化,否则下层阶级会嫉妒您的财产。:)

于 2013-06-17T18:49:41.150 回答
0

如果您使用 Dollar 需要公开这些字段,请公开。否则,如果您仅在其定义的类中访问 Dollar,请使用 private。

我的经验法则是将所有内容都设为私有,除非有某种需求迫使该领域公开。

于 2013-06-17T18:15:09.977 回答
0

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

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

否则,将其公开。

于 2013-06-17T18:15:42.813 回答