字典在包含它时不会从不同的类返回值
c#
我试图保存有关用户 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 个定义,每个类中一个,那么即使它们共享相同的名称,它们也是完全不同的对象。
即使在一个类中有一个定义,除非它是静态的,否则同一类的不同实例将具有不同的对象。