代码之家  ›  专栏  ›  技术社区  ›  Vadim

为什么visual studio默认不创建公共类?[复制品]

  •  38
  • Vadim  · 技术社区  · 15 年前

    在visual studio中,当您添加一个新类时,它总是在没有修饰符的情况下创建的,这使类成为内部类。

    class MyClass
    {
    }
    

    我希望我的类默认创建为公共类。

    为什么默认是内部的?

    你想要什么?

    9 回复  |  直到 7 年前
        1
  •  27
  •   Anton Gogolev    15 年前

    制作课堂 internal 默认情况下,这对我来说是非常有意义的:将您的隐私留给自己,并且只显式地公开真正需要公开的部分:其他一切只是实现细节,不应该对外公开。

    如果你想测试你的 内部的 类,.net 2.0以后的版本引入了一个名为 InternalsVisibleToAttribute 哪一个

    指定通常仅在当前程序集内可见的类型对其他程序集可见。

    如果这真的让你恼火,看 %ProgramFiles%\Microsoft Visual Studio 8\Common7 IDE\ItemTemplates\CSharp\1033\Class.zip . 这是一个模板,您可以更改以满足您的需要。resharper也有类似的功能,但是它可以直接从用户界面中访问。

        2
  •  10
  •   SliverNinja - MSFT    7 年前

    要在默认情况下为Visual Studio 2012创建公共类,请执行以下操作:

    编辑此文件: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

    像这样:

    using System;
    using System.Collections.Generic;
    $if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
    $endif$using System.Text;
    $if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks;
    $endif$
    namespace $rootnamespace$
    {
        public class $safeitemrootname$
        {
        }
    }
    

    更多信息: http://aaron-hoffman.blogspot.com/2013/05/edit-default-visual-studio-2012-item.html

        3
  •  4
  •   shsteimer    15 年前

    C倾向于将所有内容默认到所需的最小范围。这是一个很好的会议,并引用在斯基特的书中。( C# In Depth ,p 224“注释/琐事”):

    [属性是]唯一需要“private”的地方 在c_ 任何给定情况下的默认访问修饰符都是最私有的。换言之,如果某个东西可以声明为私有的,那么完全省略访问修饰符将默认它为私有的。这是语言设计中一个很好的元素,因为很难不经意间出错:如果你想让某个东西比它更公开,那么当你尝试使用它时就会注意到。

        4
  •  2
  •   BenAlabaster    15 年前

    我喜欢这样。这样你就必须有意识地决定你想让它公开。这很像这个论点,你是希望你的计算机默认对外开放,还是希望你自己配置它来访问互联网。

    这两种方法都有各自的优点,其中一种方法具有重要的潜在安全隐患,我相信您应该意识到并作出有意识的决定,而不是仅仅自动发生。

        5
  •  1
  •   Winston Smith    15 年前

    因为在C_中,类默认是内部的。因此,visualstudio遵循c规范。

    下面的文章将解释c中的访问修饰符和默认可见性。

    http://msdn.microsoft.com/en-us/library/ms173121.aspx

        6
  •  1
  •   TWith2Sugars    15 年前

    您可以更改C类的模板-通常位于 “C:\程序文件(x86)\ Microsoft Visual Studio 9.0\VC”

    甚至创建自己的模板。

        7
  •  1
  •   danswain    15 年前

    就我个人而言,我更喜欢这样,它迫使你积极思考你想公开哪些课程。

    它最终默认你进入一个希望更干净的api设计,从而更好的更友好的软件。您不想公开代码的内部工作方式,如果所有内容都默认为public,则不可避免地会发生这种情况。

    这有点主观,就我个人而言,我更喜欢关掉一切,只打开我不需要的东西。

        8
  •  1
  •   Pondidum    15 年前

    有趣的是,这只发生在c-在vb.net中,默认情况下会得到一个公共类。

    就我个人而言,我更喜欢默认的公共类,因为通常其他类需要访问它。(不过,我的大部分工作都在数据层)

        9
  •  0
  •   Dave Cousineau    13 年前

    在代码的所有领域中,尽可能地限制事情是一种良好的实践。如果没有特殊的原因,一切都应该是私有的、只读的(更好的是const)和静态的。如果变量、方法或属性可以是私有的,则将其设为私有。如果它不能是私有的,但可以被保护,就让它受到保护。如果它可以是只读的,那么将它设为只读。如果可以是静态的,就让它静态。类也是如此:默认情况下,它们应该是内部的,并且只有在您确定这是要导出的类时才会公开。