C#访问修饰符

本文概述

  • 1)C#公共访问说明符
  • 2)C#受保护的访问说明符
  • 3)C#内部访问说明符
  • 4)受C#保护的内部访问说明符
  • 5)C#专用访问说明符
C#访问修饰符或说明符是用于指定C#应用程序中变量和函数的可访问性或范围的关键字。
C#提供了五种类型的访问说明符。
  1. 公共的
  2. 受保护的
  3. 内部
  4. 内部保护
  5. 私人的
【C#访问修饰符】我们可以选择任何一种来保护我们的数据。公共不受限制,私人受最大限制。下表介绍了每种服务器的可访问性。
访问说明符描述
Public它指定访问不受限制。
Protected它指定访问仅限于包含类或派生类。
Internal它指定访问仅限于当前程序集。
protected internal它指定访问仅限于当前程序集或从包含类派生的类型。
Private它指定访问限制为包含类型。
现在,让我们创建示例来检查每个访问说明符的可访问性。
1)C#公共访问说明符它使数据可以公开访问。它不将数据限制为已声明的块。

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"); } } }

输出:
Hello Shantosh Kumar Hello Peter Decosta

2)C#受保护的访问说明符它可以在该类中访问,并且范围有限。在继承的情况下,也可以在子类或子类中访问它。

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"); } } }

输出:
Compile time error 'ProtectedTest.name' is inaccessible due to its protection level.

例2
在这里,我们通过继承访问子类中受保护的成员。
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"); } } }

输出:
Hello Shashikant Hello Swami Ayyer

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

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"); } } }

输出:
Hello Shantosh Kumar Hello Peter Decosta

4)受C#保护的内部访问说明符声明为protected internal的变量或函数可以在声明了该变量或函数的程序集中进行访问。也可以在另一个程序集中的派生类中访问它。

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"); } } }

输出:
Hello Shantosh Kumar Hello Peter Decosta

5)C#专用访问说明符私有访问说明符用于指定变量或函数的私有访问性。它是限制性最强的,并且只能在声明它的类的主体内访问。

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"); } } }

输出:
Compile time error 'PrivateTest.name' is inaccessible due to its protection level.

C#专用说明符示例2
using System; namespace AccessSpecifiers { class Program { private string name = "Shantosh Kumar"; private void Msg(string msg) { Console.WriteLine("Hello " + msg); } static void Main(string[] args) { Program program = new Program(); // Accessing private variable Console.WriteLine("Hello " + program.name); // Accessing private function program.Msg("Peter Decosta"); } } }

输出:
Hello Shantosh Kumar Hello Peter Decosta

    推荐阅读