C#教程
C#控制语句
C#函数
C#数组
C#面向对象
C#命名空间和异常
C#文件IO
C#集合
C#多线程
C#其它

C# 访问修饰符

C# 访问修饰符/说明符

C# 访问修饰符或说明符是用于指定 C# 应用程序中变量和函数的可访问性或范围的关键字。
C# 提供了五种类型的访问说明符。
Public Protected Internal Protected internal Private
我们可以选择其中任何一种来保护我们的数据。 Public 不受限制,而 Private 受限制最多。下表描述了每个的可访问性。
访问说明符 说明
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# Protected Access Specifier

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

示例

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.
Example2
这里,我们通过继承访问子类中的受保护成员。
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# 受保护的内部访问说明符

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

示例

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# Private Access Specifier

Private Access Specifier 用于指定对变量或函数的私有访问。它是最严格的,并且只能在声明它的类的主体内访问。

示例

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

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4