2010-02-20 104 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

相關問題