关于C#中的5种修饰符


1.关于C#中的5种修饰符

	 public (公有的)谁都可以访问
	 private (私有的)只限于本类成员访问。 子类和实例都不能访问。
	 protected (受保护的)只限于本类和子类访问,实例不能访问。
	 internal  (内部的) 限于当前命名空间下访问,其他命名空间不能访问
	 protected internal(受保护内部的)只限于当前命名空间下的本类或子类访问,实例和其他命名空间不能访问

2.修饰符的详细介绍

public (公有的)

public 共有的,这个比较好理解了,公有的也就是说谁都可以访问它,不受任何限制,当前类,子类,实例对象,都可以访问到。。
打个比方,就比如说家里有一个车,这个车主说了这是公用车,没有钥匙,谁来都可以用这个车,没有什么限时。下面做个示例演示一下。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 测试
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修饰的,所以在这里是可以访问,创建实例的
            Text1 text1 = new Text1();
            // t 也是public 修饰的,所以在这里是可以访问,并对其赋值
            text1.vehicle = "怎么谁都能调用我!!! 原来我是public修饰过的";
            // 这里通过类的示例名去调用类的方法,方法也public 修饰的
            text1.show();
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 这个类 是用public 修饰的,就是说他是公有的 谁都可以访问的
    /// </summary>
    public class Text1
    {
        public string vehicle;
        /// <summary>
        /// 这是一个public 修饰的测试方法,用来输出的
        /// </summary>
       public void show()
        {
        	// 这里是一个输出语句
            Console.WriteLine(vehicle);
        }
    }
}

private (私有的)

只能在当前类内部进行访问使用,就算是子类,实例对象,都访问不到。
还是以说家里的那个车,这回这个车主说了这是 私有的,就我一个人可以使用,其余的人谁也不行,就算是车主儿子也不能用。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 测试
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修饰的,所以在这里是可以访问,创建实例的
            Text1 text1 = new Text1();

            // 这里通过类的示例名去调用类的方法,方法也public 修饰的
            text1.show();
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 这个类 是用public 修饰的,就是说他是公有的 谁都可以访问的
    /// </summary>
    public class Text1
    {
        // 这是私有成员,他只能在Text1类中使用,在其他的地方是调用不到的
        private string vehicle = "我是private修饰的,所以我只能在Text1中使用";
        /// <summary>
        /// 这是一个public 修饰的测试方法,用来输出的 
        /// </summary>
        public void show()
        {
            // 这里是一个输出语句
            Console.WriteLine(vehicle);
        }
    }
}

protected (受保护的)

保护访问。只限于本类和子类访问,实例不能访问。
还是说家里的那个车,这回车主说了,这个车是我家的宝贝,除了我自己家人,谁也不能用,我谁都不借。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 测试
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修饰的,所以在这里是可以访问,创建实例的
            Text1 text1 = new Text1();

            // 这里通过类的示例名去调用类的方法,方法也public 修饰的
            text1.show1();
            Text2 text2 = new Text2();
            text2.show2();
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 这个类 是用public 修饰的,就是说他是公有的 谁都可以访问的
    /// </summary>
    public class Text1
    {
        // 这是受保护的成员,他只能在Text1和Text1的子类可以使用
        protected string vehicle = "我是protected修饰的,所以我只能在Text1和Text1的子类可以使用";
        /// <summary>
        /// 这是一个public 修饰的测试方法,用来输出的 
        /// </summary>
        public void show1()
        {
            Console.WriteLine("这是父类调用vehicle");
            // 这里是一个输出语句
            Console.WriteLine(vehicle);
        }
    }
    /// <summary>
    /// 这里是用public 修饰的,并且继承 Text1
    /// </summary>
    public class Text2 : Text1
    {
        /// <summary>
        /// 这是一个public 修饰的测试方法,用来输出的 
        /// </summary>
        public void show2()
        {
            Console.WriteLine("这是子类调用vehicle");
            // 这里是一个输出语句
            Console.WriteLine(vehicle);
        }
    }
}

internal (内部的)

内部访问。只限于本项目内访问,也就是说可以在当前的命名空间下面内部随意访问,其他命名空间下面不能是访问。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 测试
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修饰的,所以在这里是可以访问,创建实例的
            Text1 text1 = new Text1();
            text1.vehicle = "vehicle是在当前命名空间下面,可以访问得到";
            // 这里通过类的示例名去调用类的方法,方法也public 修饰的
            text1.show1();
            
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 这个类 是用public 修饰的,就是说他是公有的 谁都可以访问的
    /// </summary>
    public class Text1
    {
        // 这是内部的的成员,他只能在 测试这个命名空间下面被访问
        internal string vehicle ;
        /// <summary>
        /// 这是一个public 修饰的测试方法,用来输出的 
        /// </summary>
        public void show1()
        {
            Console.WriteLine("这是父类调用vehicle");
            // 这里是一个输出语句
            Console.WriteLine(vehicle);
        }
    }
    
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 测试;

namespace 测试2
{
    class Program
    {
        static void Main(string[] args)
        {
        	// Text1是public 修饰的,所以在这里是可以访问,创建实例的
            Text1 text1 = new Text1();
            //vehicle 成员是用 internal修饰的,所以无法访问
            //text1.vehicle = "无法访问";
        }
    }
}

protected internal (受保护内部的)

这个 访问修饰符 和protected 没什么区别,这里是说内部受保护的,在外部访问不到,protected受保护的,在外部同样也访问不到,至于在内部里面访问,protected internal 和 单独的protected 没什么区别


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM