簡體   English   中英

C#中的Typedef等效?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM