为什么Visual Studio在C#中将新类声明为私有?我几乎总是把它们交给公众,我是疯了吗?
答案 0 :(得分:16)
我不确定为什么会这样做,但是这样做是为了让Visual Studio默认将类创建为Public:
转到“Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033”,你会发现一个名为Class.zip的文件,在.zip文件中打开名为Class.cs的文件,文件的内容如下所示:
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$using System.Text;
namespace $rootnamespace$
{
class $safeitemrootname$
{
}
}
您需要做的就是在班级名称前添加“公共”。结果应如下所示:
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$using System.Text;
namespace $rootnamespace$
{
public class $safeitemrootname$
{
}
}
您需要做的最后一件事是刷新Visual Studio正在使用的所有模板,并让他重新加载它们。对此的命令是(它需要一段时间,所以坚持):
devenv /installvstemplates
就是这样,默认情况下不再有私有类。当然你也可以添加内部或任何你想要的东西。
答案 1 :(得分:8)
默认情况下,私有访问似乎是C#语言说明符的合理设计选择。
良好的通用设计原则是使所有访问级别尽可能具有限制性,以最大限度地减少依赖性。如果您尽可能地限制访问级别并使开发人员采取某些措施使类或成员更加可见,则您不太可能以错误的访问级别结束。如果某些东西不像你需要的那么公开,那么当你遇到编译错误时就会立即显现出来,但是发现一些比它应该更加明显的东西并不是那么容易。
答案 2 :(得分:0)
不,我总是不得不在班级前面敲打那个“公共”关键词,所以你并不孤单。我想模板设计师认为从基础开始是一个好主意。您可以在Visual Studio安装中编辑这些模板,如果它真的让您烦恼,但我还没有达到这一点。
答案 3 :(得分:0)
即使您将某个类标记为公共类,默认情况下成员仍然是私有的。换句话说,该类在同一名称空间之外几乎没用。我认为默认情况下公开它可能会走得太远。尝试使用'内部'一些。它应为大多数目的提供足够的访问权限。
答案 4 :(得分:-1)
派生C#的C ++指定默认的类访问级别是私有的。无论好坏,C#都会向前推进。
答案 5 :(得分:-2)
出于安全考虑。
您希望公开某些方法而不是全班。