在C#中,有没有一种方法来定义类型同义词?

时间:2019-02-02 00:55:24

标签: c# types type-alias type-synonyms

在我的C#项目中,我需要以下形式的长联合类型:

System.Tuple<..., ..., ...>

其中...是名称长度足以使整个元组类型声明延伸整个行宽的组件。

C#是否支持一种简写方式?

我正在想像Haskell的type synonyms之类的东西,在这里我可以声明一个简短的类型名称来代替长名称,就像声明一个新变量一样容易。

我尝试使用var,但是由于我需要声明delegate的参数类型,因此出现错误消息:“上下文关键字'var'只能出现在局部变量中声明或脚本模式”;似乎简单地使用var不会对我的情况下的工作。

2 个答案:

答案 0 :(得分:3)

有:

using MyAlias = MyLongType

它被称为使用别名指令。它也适用于命名空间。更多信息here

但是,这仅在1个文件内有效。 您需要在将要使用的每个文件中编写它,或者使用解决方法:

从具有长类型的类继承,并且不向功能添加任何内容。

示例:

class  MyAlias: MyLongType{}

答案 1 :(得分:2)

直接从文档

using directive (C# Reference)

  

为名称空间或类型创建别名。这称为使用   别名指令。

     

using Project = PC.MyCompany.Project;

例如

using ShortTypeName = My.Very.Silly.Long.TypeName.That.is.VerySuspiciousAndProbablyShouldBeRefactoredAnyway;`
using ShortOtherTypeName = My.Very.Silly.Long.TypeName.That.is.VeryOtherSuspiciousAndProbablyShouldBeRefactoredAnyway;`

internal class Program
{
    private (ShortTypeName , ShortOtherTypeName ) _myLovelyTuple;