【发布时间】:2022-10-08 09:58:13
【问题描述】:
我同时使用 Unity 和 Visual Studio 来管理使用 Unity 和 C# 的网站。
我有一个加载正常的世界地图,但在浏览器控制台中显示此错误:
ArgumentNullException:值不能为空。
参数名称:key
所以我加载了 Unity,看看我是否能找到任何错误,并看到一个名为的文件地图显示.cs.
查看错误,我认为它与字典对象有关。
在那个代码文件中,确实有一个字典对象。
但是,看起来代码正在检查任何可能为空的内容。
所以我不确定我还能检查多少?
有没有更有效的方法来检查字典中的空值,以便不显示错误?
这是字典对象的代码:
public Dictionary<string, MapController> MapDictionary; MapController mapController = CreateMapController(mapData); if (mapController != null) { if (mapController.MapId != null || mapController.MapId != "") { string mapControllerId = mapController.MapId; if (!MapDictionary.ContainsKey(mapControllerId)) { MapDictionary.Add(mapControllerId, mapController); } } }谢谢!
【问题讨论】:
-
使用
!String.IsNullOrEmpty(mapController.MapId)。mapController.MapId != null || mapController.MapId != ""的值为null,if 条件为真。 -
这个条件
if (mapController.MapId != null || mapController.MapId != "")将始终评估为true,我认为这不是你想要的。 -
你想要 && (AND) NOT || (或者)。
string.IsNullOrWhiteSpace(mapController.MapId)方法已经可以做到这一点。 -
提高@Ralf .. 请注意,
IsNullOrWhiteSpace涵盖了更多的边缘情况,例如只有空格和制表符.. 在这种情况下这不太重要,但它与检查null或""不完全相同;).. 在这个用例中,它很可能是你想要的,因为如前所述..它涵盖了更多的边缘情况 -
@derHugo 正确。您可能错过了提到
string.IsNullOrEmpty作为他检查的确切对应方法;)
标签: c# dictionary unity3d