在C#中是否能够像在C++中一样创建“私有”或“公共”块?

8
在C++中,可以通过私有化来创建一个成员“块”:
private :
    int var1;
    char var2;
    ...

public :
    int var3;
    char var4;
    ...

我尝试寻找在C#中相同的示例,但未能找到。我尝试在Visual Studio中编写这样的代码块,但出现了错误。

在C#中是否有类似的语法是有效的?


2
每个成员都必须加上访问修饰符,否则它将采用默认值。 - Hut8
2
我认为简短的回答是:不。 - Mike Christensen
目前的答案是不。 - nsconnector
1
正如 @MikeChristensen 所提到的,这是完全重复的。请使用搜索。 - illegal-immigrant
我有时会想人们是怎样决定点赞/踩的。第一票是否往往能够带动后面的趋势?同样的问题被踩得和这个问题被赞得一样多。 - Michael Schnerring
1
@ebeeb,另一个问题(我在关闭投票之前没有找到)非常混乱,混合了几个不同的问题。我认为这就是它被投反对票并关闭的原因。 - SIMEL
6个回答

8
简而言之,不需要。你总是应该在字段/方法前面写出访问修饰符。
public int var1;
public char var2;

请注意,private是默认的修饰符。这是一个设计问题,但我总是会明确指定修饰符。(即使只是为了一致的缩进!)
在msdn上阅读有关可访问性级别(C#)的更多信息。

3
不,你应该在每个成员(属性、字段或方法)之前写访问修饰符。

2

简短回答:不需要。你需要在每一行前添加一个访问修饰符号,如果没有,则会有默认值(成员为私有,类型为内部)。


0
不,这是不可能的。但是如果你想将类成员分组到逻辑组中,可以使用regions
#region Private properties

private int var1;

#endregion

请不要使用区域,阅读这样的代码会导致不断扩展/折叠区域...将具有相同访问级别的成员分组应该就可以了。 - illegal-immigrant
唉,我很高兴不是只有我讨厌区域。 - Mike Christensen
有些人喜欢使用代码区域,我在其他开发者编写的代码中也经常看到。但我个人并不喜欢使用它们。 - Michael Schnerring
1
我并没有说“你应该使用区域”,只是你可以。 :) 我个人从来不使用它们。 - Alexander Tsvetkov

0

这是不可能的。不过,以下是一些其他提示:

如果您想实现不同的读写访问,请尝试以下方法:

public int Var1 { get; private set; }

如果你的目的只是为了缩短代码,这至少可以节省一些字符。

private int _var1, _var2, _var3;
private char _char1, _char2;

0

目前的答案是否定的。 像添加访问修饰符这样的意图

public string name;
public string address;

目的是使代码更易读。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接