我知道这个确切的问题has been asked,但是那里发布的解决方案对我来说似乎不起作用。这是我正在尝试的代码:
namespace ConsoleApplication5
{
class Program
{
enum Tile { Empty, White, Black };
using Board = Tile[8,8];
我得到的错误:
在类,结构或接口成员声明中使用'无效标记
似乎必须将“using”子句移到Program
类之外,但我的Tile
枚举不存在。那么我该怎么做呢?
答案 0 :(得分:7)
看起来您正在尝试使用名称来表示实例化Tile[,]
数组的特定方式。
为什么不宣布一个执行此操作的方法?
Tile[,] GetBoard()
{
return new Tile[8, 8];
}
另一种选择,虽然我认为这有点奇怪(更不用说hacky),但是要定义一个带有隐式运算符的Board
类型转换为Tile[,]
,如下所示:
public class Board
{
private Tile[,] tiles = new Tile[8, 8];
public static implicit operator Tile[,](Board board)
{
return board.tiles;
}
}
这实际上允许你这样做:
Tile[,] board = new Board();
答案 1 :(得分:6)
你不能那样使用using
。
您只能使用具体类型,而不能使用“构造函数”。
答案 2 :(得分:2)
不幸的是,您无法使用using
声明数组类型的名称。我不知道为什么,但C#规范不允许它。
但是,只需将Board
声明为包含所需数组的新类型,就可以非常接近,例如:
public class Board
{
public Tile[,] Tiles = new Tile[8,8];
}
现在每次你说new Board()
,你都会自动得到一个8x8的瓷砖阵列。