C#作用域、访问修饰符和命名空间

类、记录和结构的访问

直接在命名空间中声明的类、记录和结构(换句话说,不嵌套在其他类或结构中)可以是pub1ic,也可以是internal。如果没有指定访问修饰符,则默认为internal。

与类成员相同,所有类型也都具有可访问性级别。
该级别可以控制是否可以从你的程序集或其他程序集中的其他代码中使用它们。
可使用以下访问修饰符在进行声明时指定类型(类,记录,结构)的可访问性:
pub1ic:同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
private:只有同一class或struct中的代码可以访问该类型或成员。
protected:只有同一class或者从该class派生的class中的代码可以访问该类型或成员。
internal:同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。

protected internal:该类型或成员可由对其进行声明的程序集或另一程序集中的派生class中的任何代码访问。
private protected:只有在其声明程序集内,通过相同class中的代码或派生自该class的类型,才能访问类型或成员。

结构成员无法声明为protected、protected internal或private protected,因为结构不支持继承。

变量作用域

作用域指可以访问该变量的代码区域。在C#程序的声明变量的位置有类的成员变量、方法和构造函数的参数、方法体和内部构造函数体内部、if while for等内部。

一般作用域确定遵循以下规则:
只要类在某个作用域中,其字段也(也称成员变量)也在该作用域内。
局部变量存在于表示声明该变量的块语句或方法结束的右花括号({})之前的作用域内。
在for、while或类似语句中声明的局部变量存在于该循环体内。

根据具体的作用范围进行判断,越界不可引用。

命名空间

使用命名空间来组织、管理有相关性的一组或者一类代码,
不同命名空间中的成员相互隔离,避免在不同命名空间中声明相同类名发生冲突。
其可访问性由命名空间中的类及类的成员的访问修饰符所决定。

命名空间的声明

声明与类的声明类似

namespace YourNameSpaceName
{
  //...
}

一个命名空间可被定义多次,但同一命名空间的成员不能被重复定义。
命名空间的起名一般是根据具体项目来定义的,常规格式为:公司名.项目名.模块名
访问命名空间中的类的语法为:命名空间.类名
访问命名空间中的类静态成员的语法为:命名空间.类名.静态成员名
常用的System.Console.WriteLine("Hello World!"); 就是这类用法。

using关键字

使用using关键字引用命名空间的好处是,只要处于这个文件中的类,都可省略命名空间而直接访问其中的成员(当然,如果有多种一样的还是要进行一下区分)

默认命名空间

C#语言中,如果未指定类的命名空间,则该类的命名空间为默认命名空间,C#语言中默认的命名空间为global。

在使用默认命名空间时,需要以global::作为前缀(如果除了默认命名空间外还有别的命名空间)

命名空间别名

using Orp = Ba.Orientation.decorating.decpration;

此时,想要引用Ba.Orientation.decorating.decpration就可以用Orp,更加方便。

嵌套命名空间

一个命名空间可以包含另一个命名空间,嵌套的命名空间及其成员也可以使用点(.)操作符访问。

参考链接

  1. 有什么推荐的C#的学习资源嘛? - 码老头的回答 - 知乎 https://www.zhihu.com/question/520996786/answer/2382904462
posted @ 2023-01-14 18:50  芋圆院长  阅读(280)  评论(0编辑  收藏  举报