在定义类时,在class关键字前面不加任何访问修饰符,它的默认作用域范围是什么,不加访问修饰符和用private修饰有什么不同。在VS中如何看出来,谢谢!

解决方案 »

  1.   

    class有不加分身乏术修饰符
    默认的就是private
      

  2.   

    恩  默认是private
    可以用来看reflector来看
        class DefaultClass
        {    }reflector:
    .class private auto ansi beforefieldinit DefaultClass
        extends [mscorlib]System.Object
    {
        .method public hidebysig specialname rtspecialname instance void .ctor() cil managed
        {
        }}
      

  3.   


    你可以自己试一下能不能这样写namespace abc
    {
        private class DefaultClass
        {    }
    }
    应该这样才是
    namespace abc
    {
        class DefaultClass //默认是internal
        {
             class privateClass //默认是private
             {
             }
        }
    }类的内部成员默认私有,其他任何默认为internal
      

  4.   

    另外,这个是IL代码,不是reflector,用reflect你就能看到下面这个了
    namespace abc
    {
        internal class DefaultClass
        {    }
    }至于IL代码,不熟悉,为什么会显示private,不敢妄言,留待楼下解释
      

  5.   

    嗯,对的,不加就是默认private访问修饰符
      

  6.   

    类,不加修饰符就是 默认这个 internal 
    这个就是应用程序集内有效。
      

  7.   

    默认是程序集范围内可访问。即带有internal修饰符
      

  8.   

    应该是internal,如果是类中类,那么是私有的,不过能设计出类中类的人那绝对是人才。