为什么只使用常量的类实例化不工作?

  • 本文关键字:实例化 工作 常量 c# c#-10.0
  • 更新时间 :
  • 英文 :


我正在创建一个类型为类的对象,并仅使用常量值实例化它,但它一直失败。我有类在另一个文件,与公共子类。我访问那些子类,通过使用类名,然后是类型,因为它的实例化,没有子类。然后它告诉我在那一行有一个空引用错误。我最初使用的是动态值,但由于失败,我用常量代替了它们。

我的代码在这里。

Requests.cs
public class Requests
{
// Start is called before the first frame update
public class PostData{
public Dictionary<string, Time> fields;
}
public class Time{
public double doubleValue;
}
}
Main.cs
public void SaveButtonClicked()
{
requestLib = new Requests();
}
private IEnumerator SaveData()
{
Requests.PostData postData = new Requests.PostData {fields = {{"Richard", new Requests.Time{doubleValue = 6.44}}}};
var request = requestLib.CreateRequest($"https://firestore.googleapis.com/v1/projects/xxx/databases/(default)/documents/levels/{FinishScreen.level}", Requests.RequestType.PATCH, postData);
Debug.Log("hi");
yield return request.SendWebRequest();
}

错误在这一行Requests.PostData postData = new Requests.PostData {fields = {{"Richard", new Requests.Time{doubleValue = 6.44}}}};

所有的值都是硬编码的,但我仍然得到NullReferenceException: Object reference not set to an instance of an object

对不起,我是c#新手,所以我找不到出现错误的原因。

当你为fields调用对象初始化器时,你并没有实例化一个新对象:

fields = {{"Richard", new Requests.Time{doubleValue = 6.44}}}

这是试图调用方法Add(string, Time),但这样做是针对空引用。

你需要这样做:

fields = new Dictionary<string, Requests.Time>
{
{ "Richard", new Requests.Time { doubleValue = 6.44 } }
}

相关内容

  • 没有找到相关文章

最新更新