在 C# 中,有没有办法定义类型同义词?
In C#, is there a way to define a type synonym?
在我的 C# 项目中,我需要以下形式的长联合类型:
System.Tuple<..., ..., ...>
其中 ...
是名称足够长的组件,整个元组类型声明延伸整行宽度。
C# 是否支持 shorthand 这个方法?
我想像 Haskell 的 type synonyms,我可以在其中声明一个短类型名称来代替长类型名称,就像我可以声明一个新变量一样容易。
我尝试使用 var
,但由于我需要向 delegate
声明参数类型,我在读取 "the contextual keyword 'var' may only appear within a local variable declaration or in script mode" 时收到错误消息;看来仅使用 var
对我的情况不起作用。
有:
using MyAlias = MyLongType
它被称为使用别名指令。它也适用于 命名空间 。更多信息 here。
然而,这仅适用于 1 个文件。
您要么需要将它写在您将使用它的每个文件中,要么使用解决方法:
从 class 继承 long 类型,不添加任何功能。
示例:
class MyAlias: MyLongType{}
直接来自文档
using directive (C# Reference)
To create an alias for a namespace or a type. This is called a using
alias directive.
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;
在我的 C# 项目中,我需要以下形式的长联合类型:
System.Tuple<..., ..., ...>
其中 ...
是名称足够长的组件,整个元组类型声明延伸整行宽度。
C# 是否支持 shorthand 这个方法?
我想像 Haskell 的 type synonyms,我可以在其中声明一个短类型名称来代替长类型名称,就像我可以声明一个新变量一样容易。
我尝试使用 var
,但由于我需要向 delegate
声明参数类型,我在读取 "the contextual keyword 'var' may only appear within a local variable declaration or in script mode" 时收到错误消息;看来仅使用 var
对我的情况不起作用。
有:
using MyAlias = MyLongType
它被称为使用别名指令。它也适用于 命名空间 。更多信息 here。
然而,这仅适用于 1 个文件。 您要么需要将它写在您将使用它的每个文件中,要么使用解决方法:
从 class 继承 long 类型,不添加任何功能。
示例:
class MyAlias: MyLongType{}
直接来自文档
using directive (C# Reference)
To create an alias for a namespace or a type. This is called a using alias directive.
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;