2010-02-20 105 views
13

是否可以使用.net类型声明别名?在C#中,如果是的话如何?是否可以使用.net类型声明别名?

+0

的可能重复[?我如何别名在C#中的类名(http://stackoverflow.com/questions/244246/how-do-i-alias-a-class-name-in-c) – nawfal 2014-07-16 11:47:04

回答

20

例如:

using MatchBuilderFactoryFunc = System.Func< 
    IndexerBase.RequestMatching.RequestFreeTextAnalyzeParameter, 
    System.Collections.Generic.IEnumerable< 
     IndexerBase.RequestMatching.IMatchBuilder>>; 

而且毕竟用它作为简单类型:

MatchBuilderFactoryFunc f = ... 
+4

+1,从来没有考虑过用这种方式 – 2010-02-20 15:26:13

1

是的。使用using指令。

如果使用术语“c#别名”进行搜索,您也可以轻松找到答案。

+0

这是正确的。 http://www.codeproject.com/KB/dotnet/Data_Type_Alias__Net.aspx显示了一个例子。 – awright18 2010-02-20 15:24:47

1

是,using能做到这一点

using q = System.Int32; 
4
using XDoc = System.Xml.Linq.XDocument; 

然而,只有它为了汇编而存活一个C#文件。你不能导出这个别名。

33

正如其他人所说的,使用“using alias = type;”使用指令的形式。几件事情:

1)它必须是文件或命名空间中的第一件事。 (除非你有extern alias指令当然;它们在使用指令之前。)

2)别名不是真正的类型。很多人希望看到:

using PopsicleCount=System.Int32; 
using GiraffeCount=System.Int32; 
... 
PopsicleCount p = 123; 
GiraffeCount g = p; // ERROR, can't convert a count of giraffes into a count of popsicles 

但我们不支持该功能。这是一个真正的别名;当我们看到它时,我们只是将alising类型替换为别名标识符; p和g都是int类型的。

3)别名仅适用于其出现的文件或名称空间声明。如果要在程序中的每个文件中使用别名,则必须将其写入程序的每个文件中。

4)别名不能在别名名称侧进行参数化,尽管它们可以是类型端的通用类型。也就是说,这是合法的:

using GiraffeList = System.Collections.Generic.List<Giraffe>; 

但这不是:

using Frobtionary<T> = System.Collections.Generic.Dictionary<Frob, T>; 
+0

你是对的我真的想要2)在你的名单上。 – 2017-05-30 04:05:41

相关问题