Is it possible to declare an alias with .net type?

£可爱£侵袭症+ 提交于 2019-12-12 07:25:08

问题


Is it possible to declare an alias with .net type ? in c# and if so how ?


回答1:


For example:

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

And after all use it as simple type:

MatchBuilderFactoryFunc f = ...



回答2:


As others have said, use the "using alias=type;" form of the using directive. Couple things about that:

1) It's got to be the first thing in the file or the namespace. (Unless you have extern alias directives of course; they go before the using directives.)

2) The alias is not a true type. A lot of people would like to see:

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

But we don't support that feature. It's a true alias; we just substitute the alising type in for the aliased identifier when we see it; p and g are both of type int.

3) The alias only applies in the file or namespace declaration it appears in. If you want to use an alias in every file in your program, you'll have to write it in every file in your program.

4) Aliases cannot be parameterized on the alias name side, though they can be closed generic types on the type side. That is, this is legal:

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

but this is not:

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



回答3:


using XDoc = System.Xml.Linq.XDocument;

However, it only survives for the compilation of the one C# file. You cannot export this alias.




回答4:


Yes, using can do that

using q = System.Int32;



回答5:


Yes. use the using directive.

If you search with the term "c# alias", you will find an answer easily, as well.



来源:https://stackoverflow.com/questions/2302631/is-it-possible-to-declare-an-alias-with-net-type

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!