A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

﹏_、

中级黑马

  • 黑马币:0

  • 帖子:11

  • 精华:0

© ﹏_、 中级黑马   /  2013-2-2 20:51  /  1510 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ﹏_、 于 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();
        }
    }
}
哪个高手能帮我看看哪里有问题我是按教学视频里面打的。。。。

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 刘明杰 于 2013-2-2 21:30 编辑

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

可以在枚举前面也加上 public访问修饰符(理论上枚举不能显示使用访问修饰符),但这里不报错。  最好应该把枚举定义在命名空间内,类之外。和类属于同级别就可以了

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
刘明杰 发表于 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:09
我还是有点不明白 ~~~
我把程序改了一下
namespace ConsoleApplication3

去掉结构前面的public

评分

参与人数 1黑马币 +4 收起 理由
﹏_、 + 4 赞一个!

查看全部评分

回复 使用道具 举报
刘明杰 发表于 2013-2-2 22:38
去掉结构前面的public

我明白了谢谢你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马