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();