黑马程序员技术交流社区

标题: 关于常量枚举和结构的问题 [打印本页]

作者: ﹏_、    时间: 2013-2-2 20:51
标题: 关于常量枚举和结构的问题
本帖最后由 ﹏_、 于 2013-2-3 10:05 编辑

namespace ConsoleApplication2
{
    class Program
    {
        enum Gender
        {
            男,
            女,
        }
        public struct person
        {
            public string name;
            public int age;
            public Gender sex;   //可访问性不一致: 字段类型“ConsoleApplication2.Program.Gender”比字段“ConsoleApplication2.Program.person.sex”的可访问性低 H:\lx\ConsoleApplication1\ConsoleApplication2\Program.cs 19 27 ConsoleApplication2

       }
        static void Main(string[] args)
        {
            person student;

            student.name = "李明";
            student.age = 20;
            student.sex = Gender.男;

            Console.WriteLine("我的名字叫{0}性别{1}年龄{2} ",student.name,student.sex,student.age);

            Console.ReadKey();
        }
    }
}
哪个高手能帮我看看哪里有问题我是按教学视频里面打的。。。。


作者: 刘明杰    时间: 2013-2-2 21:25
本帖最后由 刘明杰 于 2013-2-2 21:30 编辑

报错的原因已经说的很清楚了:字段类型“ConsoleApplication2.Program.Gender”比字段“ConsoleApplication2.Program.person.sex”的可访问性低
person里面 Gender sex的访问修饰符是public , 因为类中的所有成员,如果没有写访问修饰符,默认为private,所以Gender 默认访问修饰符为private,可访问性低于person.sex

可以在枚举前面也加上 public访问修饰符(理论上枚举不能显示使用访问修饰符),但这里不报错。  最好应该把枚举定义在命名空间内,类之外。和类属于同级别就可以了
作者: ﹏_、    时间: 2013-2-2 22:09
刘明杰 发表于 2013-2-2 21:25
报错的原因已经说的很清楚了:字段类型“ConsoleApplication2.Program.Gender”比字段“ConsoleApplication ...

我还是有点不明白 ~~~
我把程序改了一下
namespace ConsoleApplication3
{
    enum Grend
    {
        男,
        女,
    }


    public struct Person
    {
       public string name;
       public int age;
       public Grend sex;
    }
   
    class Program
    {
        

        static void Main(string[] args)
        {
            Person onePerson;

            onePerson.name = "lipa";
            onePerson.age = 18;
            onePerson.sex = Grend.男;

            Console.WriteLine("我叫{0}年龄{1}性别{2}",onePerson.name,onePerson.age,onePerson.sex);
            Console.ReadKey();
        }
    }
}
为什么还是报错呢 我把枚举定义在了和类同等级了
作者: 刘明杰    时间: 2013-2-2 22:38
﹏_、 发表于 2013-2-2 22:09
我还是有点不明白 ~~~
我把程序改了一下
namespace ConsoleApplication3

去掉结构前面的public
作者: ﹏_、    时间: 2013-2-3 10:04
刘明杰 发表于 2013-2-2 22:38
去掉结构前面的public

我明白了谢谢你




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