用文本指向类的类填充列表

发布于 2024-12-05 14:48:36 字数 717 浏览 0 评论 0原文

如何减少这个 _tile 分配,以便我可以进行单个分配?

x 是一个匿名列表。

x => List {String name, int x, int y}

和一个列表 _tiles

_tiles.AddRange(from tile in x
where tile.Type.ToLower() == "start".ToLower()
select new Start(this)
{
Position = new Vector2(tile.X, tile.Y),
Texture = _texture2D

});

_tiles.AddRange(from tile in x
where tile.Type.ToLower() == "One".ToLower()
select new OneTouch(this)
{
Position = new Vector2(tile.X, tile.Y),
Texture = _texture2D

});

...

_tiles.AddRange(from tile in x
where tile.Type.ToLower() == "Two".ToLower()
select new ReverseTouch(this)
{
Position = new Vector2(tile.X, tile.Y),
Texture = _texture2D

How can I reduce this _tile assignment, so I could make a single assignment?

x is a anonymous list.

x => List {String name, int x, int y}

and a List _tiles

_tiles.AddRange(from tile in x
where tile.Type.ToLower() == "start".ToLower()
select new Start(this)
{
Position = new Vector2(tile.X, tile.Y),
Texture = _texture2D

});

_tiles.AddRange(from tile in x
where tile.Type.ToLower() == "One".ToLower()
select new OneTouch(this)
{
Position = new Vector2(tile.X, tile.Y),
Texture = _texture2D

});

...

_tiles.AddRange(from tile in x
where tile.Type.ToLower() == "Two".ToLower()
select new ReverseTouch(this)
{
Position = new Vector2(tile.X, tile.Y),
Texture = _texture2D

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

潇烟暮雨 2024-12-12 14:48:36
IEnumerable<Tile> tiles = x.Select(tile =>
{
  Tile currentTile = null;

  switch (tile.Type.ToLower())
  {
    case "start":
      currentTile = new Start(this);
      break;

    case "One":
      currentTile = new OneTouch(this);
      break;

    case "Two":
      currentTile = new Start(this)
      break;

    ...

    default:
      // You know what to do...
   }

   currentTile.Position = new Vector2(tile.X, tile.Y),
   currentTile.Texture = _texture2D

   return currentTile;
});

从那里您可以使用tiles.ToList()构建一个列表
或使用 _tiles.AddRange(tiles); 填充现有的范围;

IEnumerable<Tile> tiles = x.Select(tile =>
{
  Tile currentTile = null;

  switch (tile.Type.ToLower())
  {
    case "start":
      currentTile = new Start(this);
      break;

    case "One":
      currentTile = new OneTouch(this);
      break;

    case "Two":
      currentTile = new Start(this)
      break;

    ...

    default:
      // You know what to do...
   }

   currentTile.Position = new Vector2(tile.X, tile.Y),
   currentTile.Texture = _texture2D

   return currentTile;
});

From there you can build a list using tiles.ToList()
or fill an existing one using _tiles.AddRange(tiles);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文