C# 在C中创建新类型的数组#

C# 在C中创建新类型的数组#,c#,C#,是否可以从现有类型在C#中创建新类型。这在C语言中是很容易做到的,但我不知道如何在C语言中做到这一点。大概是这样的: type Map int[,] 据我所知,没有 遗产 不能从数组类型继承 引用C#5.0规范第10.1.4.1节 类类型的直接基类不能是以下任何类型:System.Array、System.Delegate、System.MulticastDelegate、System.Enum或System.ValueType。此外,泛型类声明不能将System.Attribute用作直接或

是否可以从现有类型在C#中创建新类型。这在C语言中是很容易做到的,但我不知道如何在C语言中做到这一点。大概是这样的:

type Map int[,]

据我所知,没有

遗产 不能从数组类型继承

引用C#5.0规范第10.1.4.1节

类类型的直接基类不能是以下任何类型:
System.Array
System.Delegate
System.MulticastDelegate
System.Enum
System.ValueType
。此外,泛型类声明不能将
System.Attribute
用作直接或间接基类

我能想到的最接近的方法是添加一个扩展方法,但这当然不是您想要的

别名 可以使用代码文件顶部的
指令设置别名:

using Map = System.Int32;
但据我所知,它不支持数组类型

引用C#5.0规范第9.4.1节,使用别名的
,如下所示:

使用标识符=名称空间或类型名称


第3.8节中定义了
名称空间或类型名称
,没有提到任何关于数组类型的内容。

如果您的唯一目的是“使用Map而不是int[,]”,则可以使用索引属性创建Map类

public class Map
{
  private int[,] _map;

  public Map(int rows, int columns)
  {
    // rows, columns validation here
    _map = new int[rows, columns];
  }

  public int this[int r, int c]
  {
    get { return _map[r,c]; }
    set { _map[r,c] = value; }
  }
}
没有
类型Map int[,]
那么短,但提供了所需的结果。例如:

Map m = new Map(4,4);
m[2,2] = 1;

你的意思是创建一个用户定义的arrey对象吗?我想使用Map而不是int[,]。它将增加代码可读性,并强制类型。创建对象与创建类型不同。我想你的意思是创建一个类型。
Map
更像是一个类型还是一个别名?有没有办法同时实现这两个目标?(键入和别名)如果不是,您将如何在C#中仅使用别名?