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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周培 中级黑马   /  2013-8-6 14:56  /  1416 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周培 于 2013-8-6 15:37 编辑
  1. //枚举
  2. enum Gender
  3. {
  4.     男,
  5.     女
  6. }
  7. //定义结构
  8. public struct Person
  9. {
  10.     public string name;
  11.     public int age;
  12.     public Gender sex;
  13. }
复制代码
错误消息  可访问性不一致: 字段类型“结构.Gender”比字段“结构.Person.sex”的可访问性低
请问 “可访问性” 是什么?谁能详细的解释下啊? 谢谢~~

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

5 个回复

倒序浏览
你定义的枚举没有给它指定访问级别,那么它默认是为private,但是你的结构Person又定义为public,从一个公有的级别访问私有的级别,你认为可以访问得到吗?你可以在enum的前面加个public。

可访问性.jpg (18.82 KB, 下载次数: 14)

可访问性.jpg

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报 1 0
可访问性就是能够访问到的最大范围
Private :只能在当前类内部访问。
Protected :只能在当前类以及所有子类内部访问。
Internal :只能在当前程序及中可访问。
Public :在任何地方都能访问。
Protect internal:相当于同时具有两者的权限,既可以在子类中访问,也可以再当前程序集中访问

调用时被调用的对象的访问权限必须要大于或者等于调用者的访问权限,不然不就造成权限放大的问题了吗
你定义的枚举没有加访问修饰符 默认为internal
而你定义的结构的访问修饰符为public >internal,
当在person这个结构中调用gender这个枚举的时候就会出现访问权限低的问题。

希望对你有所帮助
回复 使用道具 举报
数据的可访问性简单的理解就是你没有没权限访问该数据。
你这个问题我也遇到过,在枚举的定义之前加上public再运行应该就可以了。
回复 使用道具 举报
c#中有5种访问修饰符,具体如下:

访问修饰符                     意义
public                      访问不受限制,可以类内和任何类外的代码中访问
protected                可访问域限定于类内或从该类派生的类内
internal                    可访问域限定于类所在的程序内
protected internal     protected或者internal,即可访问域限定于类所在的程序或那些由它所属的类派生的类内
private                    可访问域限定于它所属的类内

回复 使用道具 举报 1 0
谢谢大家的耐心回答{:soso_e176:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马