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博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值