C# 属性

C# 抽象

C# 字符串

C# 泛型

C# 杂项

C# 新特性

C# 访问修饰符/说明符

C# 访问修饰符或说明符是用于指定 C# 应用程序中变量和函数的可访问性或范围的关键字。

C# 提供了五种类型的访问说明符。

  1. Public

  2. Protected

  3. Internal

  4. Protected internal

  5. Private

我们可以选择其中任何一种来保护我们的数据。公共不受限制,私人受到最大限制。下表描述了每个的可访问性。

访问说明符描述
上市它指定访问不受限制。
受保护它指定访问仅限于包含类或派生类。
内部的它指定访问仅限于当前程序集。
受保护的内部它指定访问仅限于当前程序集或从包含类派生的类型。
私人的它指定访问仅限于包含类型。

现在,让我们创建示例来检查每个访问说明符的可访问性。


1) C# 公共访问说明符

它使数据可以公开访问。它不会将数据限制在声明的块中。

例子 (Example)

using System;  
namespace AccessSpecifiers  
{  
    class PublicTest  
    {  
        public string name = "Shantosh Kumar";  
        public void Msg(string msg)  
        {  
            Console.WriteLine("Hello " + msg);  
        }  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            PublicTest publicTest = new PublicTest();  
            // Accessing public variable  
            Console.WriteLine("Hello " + publicTest.name);  
            // Accessing public function  
            publicTest.Msg("Peter Decosta");  
        }  
    }  
}

输出:

你好Shantosh Kumar
你好Peter Decosta

2) C# 受保护的访问说明符

它可以在类中访问,并且范围有限。在继承的情况下,它也可以在子类或子类中访问。

例子 (Example)

using System;  
namespace AccessSpecifiers  
{  
    class ProtectedTest  
    {  
        protected string name = "Shashikant";  
        protected void Msg(string msg)  
        {  
            Console.WriteLine("Hello " + msg);  
        }  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ProtectedTest protectedTest = new ProtectedTest();  
            // Accessing protected variable  
            Console.WriteLine("Hello "+ protectedTest.name);  
            // Accessing protected function  
            protectedTest.Msg("Swami Ayyer");  
        }  
    }  
}

输出:

编译时错误“ProtectedTest.name”因其保护级别而无法访问。

示例 2

在这里,我们通过继承访问子类中的受保护成员。

例子 (Example)

using System;  
namespace AccessSpecifiers  
{  
    class ProtectedTest  
    {  
        protected string name = "Shashikant";  
        protected void Msg(string msg)  
        {  
            Console.WriteLine("Hello " + msg);  
        }  
    }  
    class Program : ProtectedTest  
    {  
        static void Main(string[] args)  
        {  
            Program program = new Program();  
            // Accessing protected variable  
            Console.WriteLine("Hello " + program.name);  
            // Accessing protected function  
            program.Msg("Swami Ayyer");  
        }  
    }      
}

输出:

你好Shashikant
你好Swami Ayyer

3) C# 内部访问说明符

internal 关键字用于指定变量和函数的内部访问说明符。此说明符只能在同一程序集中的文件中访问。

例子 (Example)

using System;  
namespace AccessSpecifiers  
{  
    class InternalTest  
    {  
        internal string name = "Shantosh Kumar";  
        internal void Msg(string msg)  
        {  
            Console.WriteLine("Hello " + msg);  
        }  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            InternalTest internalTest = new InternalTest();  
            // Accessing internal variable  
            Console.WriteLine("Hello " + internalTest.name);  
            // Accessing internal function  
            internalTest.Msg("Peter Decosta");  
        }  
    }  
}

输出:

你好Shantosh Kumar
你好Peter Decosta

4) C# 受保护的内部访问说明符

声明为受保护内部的变量或函数可以在声明它的程序集中访问。它也可以在另一个程序集中的派生类中访问。

例子 (Example)

using System;  
namespace AccessSpecifiers  
{  
    class InternalTest  
    {  
        protected internal string name = "Shantosh Kumar";  
        protected internal void Msg(string msg)  
        {  
            Console.WriteLine("Hello " + msg);  
        }  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            InternalTest internalTest = new InternalTest();  
            // Accessing protected internal variable  
            Console.WriteLine("Hello " + internalTest.name);  
            // Accessing protected internal function  
            internalTest.Msg("Peter Decosta");  
        }  
    }  
}

输出:

你好Shantosh Kumar
你好Peter Decosta

5) C# 私有访问说明符

私有访问说明符用于指定对变量或函数的私有访问。它仅在声明它的类的主体内是最严格和可访问的。

例子 (Example)

using System;  
namespace AccessSpecifiers  
{  
    class PrivateTest  
    {  
        private string name = "Shantosh Kumar";  
        private void Msg(string msg)  
        {  
            Console.WriteLine("Hello " + msg);  
        }  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            PrivateTest privateTest = new PrivateTest();  
            // Accessing private variable  
            Console.WriteLine("Hello " + privateTest.name);  
            // Accessing private function  
            privateTest.Msg("Peter Decosta");  
        }  
    }  
}

输出:

编译时错误'PrivateTest.name' 由于其保护级别而无法访问。

C# 私有说明符示例 2

例子 (Example)

using System;  
namespace AccessSpecifiers  
{  
    class Program  
    {  
        private string name = "Shantosh Kumar";  
        private void Msg(string msg)  
        {  
            Console.WriteLine("你好" + msg);  
        }  
        static void Main(string[] args)  
        {  
            Program program = new Program();  
            // Accessing private variable  
            Console.WriteLine("你好" + program.name);  
            // Accessing private function  
            program.Msg("Peter Decosta");  
        }  
    }  
}

输出:

你好Shantosh Kumar
你好Peter Decosta


上一主题 C# 命名空间 下一主题 C# 封装
  • 使用社交账号登录,本站支持
全部评论(0)