在C#中声明类型同义词

我希望我在文档中错过了这个。 有没有办法在C#中声明一个类型同义词?

您可以使用using语句为类型创建别名。

例如,以下内容将为System.Int32创建一个名为MyInt的别名

 using MyInt = System.Int32; 

或者,您可以在某些情况下使用inheritance来提供帮助。 例如

创建类型为List People

 public class People: List { } 

不是别名,但它确实简化了事情,特别是对于像这样的更复杂的类型

 public class SomeStructure : List>> { } 

现在你可以使用SomeStructure类型而不是那个有趣的generics声明。

对于您在评论中的示例,对于Tuple您可以执行以下操作。

 public class MyTuple : Tuple { public MyTuple(int i, string s) : base(i, s) { } } 

也许您正在寻找使用别名指令 :

 using MyType = MyNamespace.SomeType; 

这使您可以在代码中键入:

 // Constructs a MyNamespace.SomeType instance... MyType instance = new MyType(); 

有没有办法在c#中声明一个类型同义词?

没有。

您可以使用using创建别名,但仅限于1个文件(命名空间)。

听起来你在谈论一个别名,你可以在你的代码文件顶部的using语句中声明:

 using MyDate = System.DateTime; 

这不是解决此问题最直接的方法,但是当我需要类型同义词时,我创建了一个具有与目标类型之间的隐式转换的类,例如:

给定Name需要与string同义,然后您可以执行以下操作:

 public class Name { public string Value; public static implicit operator string(Name name) { return name.Value; } public static implicit operator Name(string name) { return new Name {Value = name}; } } 

这将使您能够在代码周围使用Name类型,编译器将允许您从字符串中为其赋值。

如果您有以下方法签名:

 public void SomeMethodThatNeedsName(Name name) 

你可以这样做:

 SomeMethodThatNeedsName("aNameThatComesFromString")