首页 > 编程语言 >C#作用域、访问修饰符和命名空间

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

时间:2023-01-14 19:01:23浏览次数:57  
标签:访问 作用域 成员 修饰符 C# 空间 class 命名

类、记录和结构的访问

直接在命名空间中声明的类、记录和结构(换句话说,不嵌套在其他类或结构中)可以是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

标签:访问,作用域,成员,修饰符,C#,空间,class,命名
From: https://www.cnblogs.com/yuyuanliu/p/17044915.html

相关文章

  • Codeforces Round #843 (Div. 2) A1A2BCE(D待补)
    url:Dashboard-CodeforcesRound#843(Div.2)-CodeforcesA1&&A2.GardenerandtheCapybaras题意:给你一个只由$a$和$b$两个字符组成的字符串现在要你把这个字......
  • ifc 术语、定义和缩略语
    术语、定义和缩略语在本文件中,以下定义适用。 3.1.1角色  actor个人、组织或代表组织行事的人 注:通用术语对象的专门化。3.1.2属性  attribute实体内的信息......
  • CF 1611 BF
    B题面大意a个1,b个2,组(1,1,1,2)(1,1,2,2)(1,2,2,2)的组最多能组几组。题面关键解题思路其实我也不知道为什么,但是$\min{a,b,\frac{a+b}{4}}$就行了......
  • C++基础教程
    C++简介C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++被认为是一种中级语言,它综合了高级语言......
  • 【Elastic Search】客户端开发
    参考:https://www.bilibili.com/video/BV17a4y1x7zq/?spm_id_from=333.337.search-card.all.click   准备:确保通过springboot依赖的es客户端与ES后台版本一致。......
  • 在Linxu云服务器中创建Java版MC服务器
    前言因为学校的课程里有华为云的Linux课程,课程发放有2佰代金券用于开启云服务器,现在课程基本结束了,代金券还剩一百五十多,之前已经试过和舍友开过MC服务器,那趁现在结课的时......
  • 50-Docker-分布式仓库Harbor高可用
    Harbor介绍基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限镜像复制:镜像可在多个Re......
  • Java集合 - ConcurrentHashMap
    介绍ConcurrentHashMap技术是为了解决问题而生的,ConcurrentHashMap解决了多个线程同时操作一个HashMap时,可能出现的内部问题。当多个线程同时操作一个HashMap时,有可......
  • 【ASP.NET Core】按用户角色授权
    上次老周和大伙伴们分享了有关按用户Level授权的技巧,本文咱们聊聊以用户角色来授权的事。按用户角色授权其实更好弄,毕竟这个功能是内部集成的,多数场景下我们不需要扩展,不......
  • 2022MoeCTF整理复现(NSS平台)
    一、[MoeCTF2022]小纸条1.jpg上的像是某种形式的猪圈密码,找一个对照表边猜边对照2.根据点和角的位置方向以及可能拼写成的单词,得到flagmoectf{ILOVEMYBIGBED}二、[M......