不加任何访问修饰符的类作用域范围。。

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

12 个解决方案

#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


该回复于2012-02-05 11:09:20被版主删除

#4


引用 2 楼 chopper7278 的回复:
恩 默认是private
可以用来看reflector来看

C# code
    class DefaultClass
    {

    }


你可以自己试一下能不能这样写

namespace abc
{
    private class DefaultClass
    {

    }
}


应该这样才是


namespace abc
{
    class DefaultClass //默认是internal
    {
         class privateClass //默认是private
         {
         }
    }
}

类的内部成员默认私有,其他任何默认为internal

#5


private

#6


引用 2 楼 chopper7278 的回复:
reflector:

C# code
.class private auto ansi beforefieldinit DefaultClass
    extends [mscorlib]System.Object……

另外,这个是IL代码,不是reflector,用reflect你就能看到下面这个了


namespace abc
{
    internal class DefaultClass
    {

    }
}



至于IL代码,不熟悉,为什么会显示private,不敢妄言,留待楼下解释

#7


学习了.

#8


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

#9


类,不加修饰符就是 默认这个 internal 


这个就是应用程序集内有效。

#10


楼上说的很对!

#11


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

#12


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

#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


该回复于2012-02-05 11:09:20被版主删除

#4


引用 2 楼 chopper7278 的回复:
恩 默认是private
可以用来看reflector来看

C# code
    class DefaultClass
    {

    }


你可以自己试一下能不能这样写

namespace abc
{
    private class DefaultClass
    {

    }
}


应该这样才是


namespace abc
{
    class DefaultClass //默认是internal
    {
         class privateClass //默认是private
         {
         }
    }
}

类的内部成员默认私有,其他任何默认为internal

#5


private

#6


引用 2 楼 chopper7278 的回复:
reflector:

C# code
.class private auto ansi beforefieldinit DefaultClass
    extends [mscorlib]System.Object……

另外,这个是IL代码,不是reflector,用reflect你就能看到下面这个了


namespace abc
{
    internal class DefaultClass
    {

    }
}



至于IL代码,不熟悉,为什么会显示private,不敢妄言,留待楼下解释

#7


学习了.

#8


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

#9


类,不加修饰符就是 默认这个 internal 


这个就是应用程序集内有效。

#10


楼上说的很对!

#11


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

#12


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