[英]Typedef-equivalent in C#?
我知道這個確切的問題已被提出 ,但是那里發布的解決方案對我來說似乎沒有用。 這是我正在嘗試的代碼:
namespace ConsoleApplication5
{
class Program
{
enum Tile { Empty, White, Black };
using Board = Tile[8,8];
我得到的錯誤:
類,結構或接口成員聲明中的令牌“使用”無效
似乎必須將“using”子句移到Program
類之外,但我的Tile
枚舉不存在。 那么我該怎么做呢?
看起來您正在嘗試使用名稱來表示實例化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();
您不能使用using
這樣的。
您只能用於具體類型,而不能用於您使用的“構造函數”。
不幸的是,您不能使用using
來聲明數組類型的名稱。 我不知道為什么,但C#規范不允許這樣做。
但是,通過簡單地將Board
聲明為包含所需數組的新類型,您可以非常接近,例如:
public class Board
{
public Tile[,] Tiles = new Tile[8,8];
}
現在,每當你說new Board()
,你會自動得到一個8x8的瓷磚陣列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.