您的位置:首页 > 编程语言 > C#

c#访问级别约束的问题

2015-12-28 22:07 369 查看
1.方法的参数的访问修饰符必须与方法的访问修饰符兼容

class MyClass
{

}

public class MyClass1
{

//方法的参数的访问修饰符必须与方法的访问修饰符兼容。
public void M1(MyClass mc)
{
Console.WriteLine(mc.ToString());
}
}


static void Main(string[] args)
{
MyClass1 cc = new MyClass1();
MyClass c1 = new MyClass();
cc.M1(c1);
Console.ReadKey();
}


这时候会报错

..............................................................................

错误 1 可访问性不一致: 参数类型“_02访问级别约束问题.MyClass”比方法“_02访问级别约束问题.MyClass1.M1(_02访问级别约束问题.MyClass)”的可访问性低 F:\03_Net基础加强20130916\Sln20130916\02访问级别约束问题\Program.cs 43 21 02访问级别约束问题

报错的原因是
<span style="color:#FF0000;">public void M1(MyClass mc)</span>
这个方法的参数的访问修饰符为internal而方法的修饰符为public,我们只要把myclass的修饰符改为public时,错误就会消失

2.子类的访问修饰符必须与父类的访问修饰符兼容

class Parent
{
internal string Name
{
get;
set;
}
}

public class Child : Parent
{

}


这时候会报错

..............................................................................

错误 1 可访问性不一致: 基类“_02访问级别约束问题.Parent”比类“_02访问级别约束问题.Child”的可访问性低 F:\03_Net基础加强20130916\Sln20130916\02访问级别约束问题\Program.cs 28 18 02访问级别约束问题

错误的原因是child类的访问级别比基类高,所以错误,这要将
<span style="color:#FF0000;">    public class Child : Parent</span>
这里的public去掉,或者在基类上面加上public 修饰符,这个错误就会解除

3.方法返回值的修饰符,必须与方法的修饰符兼容
class MyClass
{

}

//如果类MyClass1的访问修饰符也是internal的,则不报错。
//如果把该类的访问修饰符改为public则 报错。
class MyClass1
{

//方法的返回值的类型的访问修饰符必须与方法的访问修饰符兼容。
public MyClass M1()
{
Console.WriteLine("ok");
return null;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: