C#中的访问修饰符
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace _09访问修饰符 7 { 8 public class Class1 9 { 10 //private私有访问修饰符,只能在当前类内部来访问。 11 12 private int age; 13 //protected访问修饰符,只能在当前类内部,以及所有当前类的子类的内部。 14 protected string name; 15 16 //internal访问修饰符,表示只能在当前程序集内部来访问。 17 internal double score; 18 19 //protected与internal没有可比性。protected是在当前类内部与所有子类内部可访问,而internal是在同一个程序集中可访问。 20 //假如不在同一个程序集中,但是依然存在继承关系,那么protected访问修饰符修饰类型依然可以访问。 21 22 //protected internal访问修饰符,相当于同时具有protected的权限和internal的权限。 23 protected internal double salary; 24 25 //public 访问修饰符在任何地方都可以访问。 26 public void Test() 27 { 28 age = 100; 29 name = "yj"; 30 } 31 32 public Class1() 33 { 34 age = 100; 35 } 36 37 } 38 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace _13访问级别约束问题 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 } 13 } 14 15 #region 可访问性不一致,子类的访问修饰符不能比父类高 16 17 ////类的访问修饰符只能是public或者是internal 18 //public class Person 19 //{ 20 // public string Name 21 // { 22 // get; 23 // set; 24 // } 25 //} 26 27 //public class Student : Person 28 //{ 29 30 //} 31 32 #endregion 33 34 #region 可访问性不一致,方法的参数和返回值的类型必须与方法本身的访问修饰符一直。 35 36 //class Person 37 //{ 38 // public string Name 39 // { 40 // get; 41 // set; 42 // } 43 //} 44 45 //public class MyClass 46 //{ 47 // //要求方法参数的访问级别与方法本身的访问级别一致。 48 // public void Do(Person p) 49 // { 50 // Console.WriteLine(p.Name); 51 // } 52 //} 53 54 #endregion 55 56 57 #region 可访问性不一致,属性的访问级别与属性的类型的访问级别 58 59 //class MyClass 60 //{ 61 62 //} 63 64 //public class Person 65 //{ 66 // public MyClass MC 67 // { 68 // get; 69 // set; 70 // } 71 72 //} 73 74 #endregion 75 76 }