C# 局部变量未在C中初始化#
我有一个静态函数,用于初始化平铺列表:C# 局部变量未在C中初始化#,c#,linq,caching,memory,initialization,C#,Linq,Caching,Memory,Initialization,我有一个静态函数,用于初始化平铺列表: private static bool MyFunction(SomeObj obj) { List<Tile> tiles = obj.Tile.GetTilesBetween(otherTile); // do stuff } C#7(我想,这是一个Unity3D应用程序,所以我认为这是当前支持的版本)。尝试将.ToList()方法添加到平铺: List<Tile> tiles = obj.Tile
private static bool MyFunction(SomeObj obj)
{
List<Tile> tiles = obj.Tile.GetTilesBetween(otherTile);
// do stuff
}
C#7(我想,这是一个Unity3D应用程序,所以我认为这是当前支持的版本)。尝试将.ToList()方法添加到平铺:
List<Tile> tiles = obj.Tile.GetTilesBetween(otherTile).ToList();
List tiles=obj.Tile.GetTilesBetween(otherTile.ToList();
GetTilesBetween()是一个返回列表的方法。我只是想看看它,但它并没有起到什么作用(我也没料到)。您在MyFunction
中声明tiles
,这样您就可以访问它了—它在其他地方不存在。在MyFunction()
中阅读我正在访问的变量范围。问题不在于tiles
不存在,问题在于在初始化match
时使用它会以某种我不理解的方式影响tiles
。您所说的“不初始化或初始化但在调试器中不可用”的确切含义是什么?请尝试创建一个并将其纳入您的问题中。就目前而言,这只是令人困惑。
// we did stuff
List<Commands> commands = CommandsOccuringInTimespan(obj.timeElapsed);
List<Tile> copyOfTiles = new List<Tile>(tiles);
IEnumerable<Commands> match = commands.Where(c => copyOfTiles.Contains(c.End));
// do more stuff
}
List<Tile> tiles = obj.Tile.GetTilesBetween(otherTile).ToList();