我试图保存有关用户 SteamID 及其在游戏中的位置的信息,这是我每 0.5 秒将此人传送到保存位置的代码,并且在控制台中返回此信息时效果很好
键:76561198333850828,值:(605.0, 41.8, 618.5)
IDictionary<Steamworks.CSteamID, Vector3> numberNames = new Dictionary<Steamworks.CSteamID, Vector3>();
while (numberNames.Count > 0)
{
foreach (KeyValuePair<Steamworks.CSteamID, Vector3> info in numberNames)
{
UnturnedPlayer steamidplayer = UnturnedPlayer.FromCSteamID(info.Key);
steamidplayer.Teleport(info.Value, 0);
Console.WriteLine("Key: {0}, Value: {1}", info.Key, info.Value);
await Task.Delay(TimeSpan.FromSeconds(0.5));
}
}
然而,当我试图从不同类别的字典中删除信息时,它说该字典不包含任何内容
internal void remname(Steamworks.CSteamID SteamID)
{
if (numberNames.ContainsKey(SteamID))
{
numberNames.Remove(SteamID);
} else
{
Console.WriteLine("Doesnt contains");
}
}
而且我完全不知道是什么导致了这个问题。
最佳答案
您是如何定义 numberNames 的? 如果有 2 个定义,每个类一个,那么即使它们共享相同的名称,它们也是完全不同的对象。
即使一个类中有一个定义,除非它是静态的,否则同一类的不同实例将具有不同的对象。
关于c# - 字典包含它时不会从不同的类返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67424791/