6

为什么 Visual Studio 在 C# 中将新类声明为私有?我几乎总是将它们切换到公开状态,我是不是疯了?

4

6 回答 6

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$
    {
    }
}

您需要做的就是在类名前添加“Public”。结果应如下所示:

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

就是这样,默认情况下不再有私人课程。当然,您也可以添加内部或任何您想要的。

来源

于 2008-09-02T16:14:09.143 回答
8

默认情况下,私有访问似乎是 C# 语言说明符的合理设计选择。

一个好的通用设计原则是尽可能限制所有访问级别,以最小化依赖关系。如果您从尽可能严格的开始并让开发人员采取一些措施使类或成员更加可见,那么您最终获得错误访问级别的可能性就较小。如果某些东西的公开程度低于您的需要,那么当您遇到编译错误时就会立即显现出来,但要发现比应有的更明显的东西并不容易。

于 2008-09-02T16:28:29.767 回答
0

不,我总是要在全班前面加上“public”关键字,所以你并不孤单。我猜模板设计者认为从最基本的开始是个好主意。你可以在你的 Visual Studio 安装中编辑这些模板,如果它真的让你很恼火,但我还没有达到这一点。

于 2008-09-02T16:13:57.740 回答
0

即使您将类标记为公共,默认情况下成员仍然是私有的。换句话说,这个类在同一个命名空间之外几乎没有用处。不过,我认为默认情况下将其公开可能会走得太远。尝试使用“内部”一些。它应该为大多数目的提供足够的访问权限。

于 2008-09-02T16:29:19.373 回答
-1

派生 C# 的 C++ 指定默认类访问级别是私有的。C# 将这一点向前推进,无论好坏。

于 2008-09-02T16:13:32.687 回答
-2

出于安全原因。

您想公开某些方法而不是整个班级。

于 2008-09-02T16:15:54.117 回答