对于我的Unity游戏,我创建了一个保存speedrun时间的JSON文件。保存的时间是Timespan字符串。加载数据时,我将字符串解析为Timespan值。保存时间时,我将Timespan作为字符串保存到文件中。
JSON文件中的示例级别:
{
"id": 1,
"personalBest": "00:00:00.0001336",
"perfectTime": "00:00:00.0001335",
}
如果某个级别尚未通过,我希望personalBest属性的值为null
,而不是像这样的
00:00:00.0000000
或
99:99:99.9999999
在我的可序列化类中,我目前有这段代码
[Serializable]
public class Level
{
public int id;
public string? personalBest; // this value could be null
public string perfectTime;
}
但是我收到了这个错误
CS0453 类型'字符串'必须是非可空类型才能使用 它作为通用类型或方法中的参数T' System.Nullable'
可以采用解决方法吗?
答案 0 :(得分:2)
所以在C#中string
已经是一个可以为空的类型了。你可以使用普通string
代替string?
。这意味着您可以通过执行以下操作将其设置为null:
string myString = null;
如果我完全误解了您的问题,请告诉我。
为了在JSON中保存null,check here
答案 1 :(得分:1)
有关string
类型的重要事项是:
string
是一个引用类型,因此可以为空,当string
字段时 声明但未初始化它将其值设置为""
和 不是null
。
即:
public string myString;
if (myString != null) {
Debug.Log("String is not null");
}
将在控制台中打印String is not null
。
这是抛弃一些人的原因,因为通常在声明但尚未初始化时的引用类型默认将其值设置为null
。
但是,如果您使用autoproperty而不是字段声明变量,那么它将表现为任何其他引用类型,默认情况下为null
。
public string myString {get;set;}
if (myString == null) {
Debug.Log("String is null");
}
将在控制台中打印String is null
。