当前位置: 首页 > article >正文

C# 命名空间详解(一)

一、命名空间的概念和定义

namespace 关键字用于声明包含一组相关对象的作用域。 可以使用命名空间来组织代码元素并创建全局唯一类型。

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

在命名空间中,可以声明零个或多个以下类型:

  • class
  • interface
  • struct
  • enum
  • delegate
  • 可以声明嵌套的命名空间(文件范围的命名空间声明除外)

编译器会添加默认命名空间。 此未命名的命名空间(有时被称为全局命名空间)存在于每个文件中。 它包含未包含在已声明的命名空间中的声明。 全局命名空间中的任何标识符都可用于已命名的命名空间。

命名空间隐式具有公共访问权限。 

二、命名空间的使用

1.using指令

using 指令允许使用在命名空间中定义的类型,而无需指定该类型的完全限定命名空间。 using 指令以基本形式从单个命名空间导入所有类型,如下例所示:
 

using System.Text;

可以将两个修饰符应用于 using 指令:

global 修饰符与将同一 using 指令添加到项目中的每个源文件具有相同的效果。 此修饰符是在 C# 10 中引入的。

global using <fully-qualified-namespace>;


static 修饰符从单个类型中导入该 static 成员和嵌套类型,而不是导入命名空间中的所有类型。

using static <fully-qualified-type-name>;


using static 指令适用于任何具有静态成员(或嵌套类型)的类型,即使该类型还具有实例成员。 但是,只能通过类型实例来调用实例成员。

2.using 别名

创建 using 别名指令,以便更易于将标识符限定为命名空间或类型。 在任何 using 指令中,都必须使用完全限定的命名空间或类型,而无需考虑它之前的 using 指令。 using 指令的声明中不能使用 using 别名。 例如,以下示例生成一个编译器错误:

using Project = PC.MyCompany.Project;
using s = System.Text;
using s.RegularExpressions; // Generates a compiler error.

三、外部别名


命名空间别名限定符提供 :: 对全局命名空间或其他可能由其他实体隐藏的别名的显式访问。

有时你可能不得不引用具有相同的完全限定类型名称的程序集的两个版本。 例如,可能需要在同一应用程序中使用某程序集的两个或多个版本。 通过使用外部程序集别名,可在别名命名的根级别命名空间内包装每个程序集的命名空间,使其能够在同一文件中使用。

using Class1V1 = GridV1::Namespace.Class1;

using Class1V2 = GridV2::Namespace.Class1;
using S = System.Net.Sockets;

class A
{
    public static int x;
}

class C
{
    public void F(int A, object S)
    {
        // Use global::A.x instead of A.x
        global::A.x += A;

        // Using ::, S must resolve to a namespace alias:
        S::Socket s = S as S::Socket;

        // In this form, if S were a class, it would be a compile-time error:
        S.Socket s1 = S as S.Socket;
    }
}

更多:

C# 数据类型、变量、作用域_c# 作用域-CSDN博客

C#中float, double的计算存在精度问题_c#double计算-CSDN博客

C#获取变量的数据类型_C#获取对象的数据类型_c# 获取变量类型-CSDN博客


http://www.kler.cn/a/408100.html

相关文章:

  • 调试器 gdb/cgdb 的使用
  • HarmonyOs鸿蒙开发实战(20)=>一文学会基础使用组件导航Navigation
  • 开源宝藏:Smart-Admin 重复提交防护的 AOP 切面实现详解
  • (附项目源码)Java开发语言,219 ssm律师事务所业务管理系统的设计与实现,计算机毕设程序开发+文案(LW+PPT)
  • 基础知识学习上
  • 2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(1)
  • 计算机网络socket编程(5)_TCP网络编程实现echo_server
  • C语言:操作符详解1
  • Java 腾讯云短信发送
  • github中banch和tag的应用
  • 【Mybatis】动态SQL详解
  • 金融服务的未来:测试自动化如何驱动合规、安全与创新
  • PHP实现选择排序
  • Rust宏系列教程—实现复杂派生宏
  • 以3D数字人AI产品赋能教育培训人才发展,魔珐科技亮相AI+教育创新与人才发展大会
  • 线程控制方法之wait和sleep的区别
  • 深入理解索引(二)
  • ubuntu搭建k8s环境详细教程
  • 「Mac玩转仓颉内测版28」基础篇8 - 元组类型详解
  • linux ollama安装没有sudo权限
  • Android 不同情况下使用 runOnUiThread
  • H.265流媒体播放器EasyPlayer.js H5流媒体播放器关于如何查看手机端的日志信息并保存下来
  • IIFE - 立即执行函数
  • Flutter:AnimatedIcon图标动画,自定义Icon通过延时Interval,实现交错式动画
  • C# 委托与事件
  • Linux——进程间通信之管道