'I have lots of checks but I am still getting this null error
I am using both Unity and Visual Studio to manage a web site that uses Unity and c#.
I have a world map that loads fine, but displays this error in the browser console:
ArgumentNullException: Value cannot be null.
Parameter name: key
So I loaded up Unity, to see if I could find any errors and I see one for a file called MapDisplay.cs.
Looking at the error, I am assuming it has something to do with a dictionary object.
In that code file, there is indeed one dictionary object.
However, it looks like the code is checking for anything that may be null.
So I am not sure how much more I can check?
Is there a more efficient way to check for null values in a dictionary so that the error doesn't display?
Here is the code for the dictionary object:
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);
}
}
}
Thanks!
Solution 1:[1]
Aside from the if condition issue discussed in the comments.
You can use (?.) optional chaining to deal that the mapController is possibly null.
With .NET Core, you can use Dictionary<TKey,TValue>.TryAdd(TKey, TValue) Method.
string mapControllerId = mapController?.MapId;
if (!String.IsNullOrEmpty(mapControllerId))
{
MapDictionary.TryAdd(mapControllerId, mapController);
}
If not, you can write a Dictionary extension method for TryAdd to deal with.
public static class DictionaryExtensions
{
public static bool TryAdd<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key, TValue @value)
{
try
{
dict.Add(key, @value);
return true;
}
catch
{
return false;
}
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
