代码之家  ›  专栏  ›  技术社区  ›  mpen

C#中的Typedef等效值?

  •  3
  • mpen  · 技术社区  · 14 年前

    我知道这个问题 has been asked ,但贴在那里的解决方案似乎不适合我。下面是我正在尝试的代码:

    namespace ConsoleApplication5
    {
        class Program
        {
            enum Tile { Empty, White, Black };
            using Board = Tile[8,8];
    

    我得到的错误是:

    类、结构或接口成员声明中的标记“using”无效

    Program 同学们,但是我的 Tile 枚举不存在。那我该怎么做呢?

    3 回复  |  直到 7 年前
        1
  •  8
  •   Dan Tao    14 年前

    Tile[,]

    为什么不声明一个实现这个功能的方法呢?

    Tile[,] GetBoard()
    {
        return new Tile[8, 8];
    }
    

    另一个选择,尽管我认为这有点奇怪(更不用说hacky了),是定义一个 Board 键入要转换为的隐式运算符 平铺[,] ,如下所示:

    public class Board
    {
        private Tile[,] tiles = new Tile[8, 8];
    
        public static implicit operator Tile[,](Board board)
        {
            return board.tiles;
        }
    }
    

    Tile[,] board = new Board();
    
        2
  •  6
  •   leppie    14 年前

    你不能使用 using 就像那样。

    只能用于具体类型,而不能用于所使用的“构造函数”。

        3
  •  2
  •   Timwi    14 年前

    不幸的是,你不能使用 using

    不过,您只需声明 Board 作为包含所需数组的新类型,例如:

    public class Board
    {
        public Tile[,] Tiles = new Tile[8,8];
    }
    

    现在每次你说 new Board()