`
sakakokiya
  • 浏览: 507302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

别名指示符是什么?

 
阅读更多
通过别名指示符我们可以为某个类型起一个别名
主要用于解决两个命名空间内有同名类型的冲突或避免使用冗余的命名空间
别名指示符在所有命名空间最外层定义,作用域为整个单元文件。如果定义在某个命名空间内,那么它只在直接隶属的命名空间内起作用
示例:
Class1.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01
{
class Class1
{
public override string ToString()
{
return “com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01's Class1″;
}
}
}
Class2.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib02
{
class Class1
{
public override string ToString()
{
return “com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib02's Class1″;
}
}
}
主单元(Program.cs):
using System;
using System.Collections.Generic;
using System.Text;
//使用别名指示符解决同名类型的冲突
//在所有命名空间最外层定义,作用域为整个单元文件
using Lib01Class1 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01.Class1;
using Lib02Class2 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib02.Class1;
namespace Example19
{
namespace Test1
{
//Test1Class1在Test1命名空间内定义,作用域仅在Test1之内
using Test1Class1 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01.Class1;
class Class1
{
//Lib01Class1和Lib02Class2在这可以正常使用
Lib01Class1 tmpObj1 = new Lib01Class1();
Lib02Class2 tmpObj2 = new Lib02Class2();
//TestClass1在这可以正常使用
Test1Class1 tmpObj3 = new Test1Class1();
}
}
namespace Test2
{
using Test1Class2 = com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01.Class1;
class Program
{
static void Main(string[] args)
{
//Lib01Class1和Lib02Class2在这可以正常使用
Lib01Class1 tmpObj1 = new Lib01Class1();
Lib02Class2 tmpObj2 = new Lib02Class2();
//注意这里,TestClass1在这不可以正常使用。
//因为,在Test2命名空间内不能使用Test1命名空间定义的别名
//Test1Class1 tmpObj3 = new Test1Class1();
//TestClass2在这可以正常使用
Test1Class2 tmpObj3 = new Test1Class2();
Console.WriteLine(tmpObj1);
Console.WriteLine(tmpObj2);
Console.WriteLine(tmpObj3);
Console.ReadLine();
}
}
}
}
结果:
com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01's Class1
com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib02's Class1
com.nblogs.reonlyrun.CSharp25QExample.Example19.Lib01's Class1
分享到:
评论

相关推荐

    C#基础概念二十五问

    1.静态成员和非静态成员的区别?...19.别名指示符是什么? 20.如何手工释放资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别? 23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射?

    C#的25个问题(内附代码示例)

    1.静态成员和非静态成员的区别?...19.别名指示符是什么? 20.如何手工释放资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别?23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射?

    常见 ASP.NET 概念(开源,说明)

    19.别名指示符是什么? 20.如何释放非托管资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别? 23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射? shadom@foxmail.com

    你必须知道的C#的25个基础概念(附源码)

    别名指示符是什么? 20.如何释放非托管资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别? 23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射? 以下是我做的一份参考答案(C# ...

    C#基础知识25个常见问题.doc

    extern是C#语言中的外部别名指示符,用于指定外部程序集或模块的别名。 4.abstract 是什么意思? abstract是C#语言中的抽象修饰符,用于声明抽象类或抽象成员。抽象类不能被实例化,必须被继承。抽象成员必须被...

    【精品教程】C#基础概念二十五问.doc

    别名指示符(using alias directive)用于为命名空间创建别名,简化代码中的引用,如`using MyAlias = System.IO;`。 20. 如何手工释放资源? 使用IDisposable接口的Dispose方法手工释放非托管资源,例如文件流、...

    C#基础问题.doc

    别名指示符(using alias directive)允许为命名空间或类型创建一个别名,简化代码中的名称引用,如 `using T = System.Threading.Tasks.Task;` 20. 如何手工释放资源? 手动释放资源通常通过使用 Dispose() 方法...

    C#面试题,C#面试经典题

    答案:别名指示符是一个特殊的指示器,用于指定一个类型的别名。 20. 如何手工释放资源? 答案:可以使用using语句或手动调用Dispose方法。 21. P/Invoke 是什么? 答案:P/Invoke 是一个平台 invoke 机制,用于...

    C#面试题目汇总经典

    在C#中,别名指示符 using alias directive 用于为命名空间提供一个简短的别名,方便在代码中引用。例如: ```csharp using MyShortName = MyVeryLongNamespace.MySubNamespace; ``` 之后就可以使用 `MyShortName`...

    C#基础概念.doc

    别名指示符(using alias directive)是 using 关键字的一种使用方式,用于为命名空间创建别名,简化代码中的类型引用。 20、如何释放非托管资源?使用 Dispose 模式,通过实现 IDisposable 接口来释放非托管资源。...

    C#使用中常见问题整理

    在C#中,没有直接的“别名指示符”,但可以通过`using`指令为命名空间或类型创建别名,简化代码。 ### 20. 如何手工释放资源? 使用`Dispose()`方法或`using`语句可以手动释放不受托管的资源,确保资源的正确清理...

Global site tag (gtag.js) - Google Analytics