黑马程序员技术交流社区

标题: 定义枚举不写访问修饰符 默认是什么 [打印本页]

作者: 范国伟    时间: 2013-8-6 21:36
标题: 定义枚举不写访问修饰符 默认是什么
为什么我把枚举写在类外面就算是前边写 private 其他类一样能访问到
  1. namespace ConsoleApplication2
  2. {
  3.     private enum A
  4.     {
  5.         A, B, C
  6.     }

  7.     public class ZiMu
  8.     {
  9.         A a = A.B;
  10.     }
  11. }
复制代码
如果写在类里面  就算是public 也是访问不到
  1. namespace ConsoleApplication2
  2. {

  3.     public class class1
  4.     {
  5.         public enum A
  6.         {
  7.             A, B, C
  8.         }
  9.     }
  10.     public class ZiMu
  11.     {
  12.         A a = A.B; //报错是未能找到类型火命名空间
  13.     }
  14. }
复制代码

作者: 陈家辉    时间: 2013-8-10 15:11
枚举默认的应该是publish吧~
作者: 心动行动    时间: 2013-8-10 22:17
默认应该是private只要在同一个命名空间的话就能访问得到,枚举类型一般是卸载类的外面命名空间的里面吧,类的成员好像不包含枚举
作者: 念念念念_、    时间: 2013-8-11 16:54
我很疑惑,你是怎么写的,怎么我写不了
  1. namespace ConsoleApplication2
  2. {
  3.     private enum A    //这里这个private 写不出来呀。没有
  4.     {
  5.         A, B, C
  6.     }

  7.     public class ZiMu
  8.     {
  9.         A a = A.B;
  10.     }
  11. }
复制代码

作者: 淡忘回忆    时间: 2013-8-11 20:43
首先你这个代码就是有问题的,namespace中直接定义的元素是不能直接声明为private,在纠正下楼上一个兄弟的错误,默认的访问修饰符是internal而不是private,internal才是只要在同一个命名空间的话就能访问得到。
然后就是你那个在类中声明枚举的,与类种类的访问类似
public class ZiMu

   {
      
       ConsoleApplication2.class1.A a = ConsoleApplication2.class1.A.B; //要这样访问
   }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2