在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")