使用面向对象编程时的 C# 数组语法

C# Array Syntax when using object oriented programming

我有以下部分 classes:

public partial class FormInstance
{
    private string referenceField;

    public string Reference
    {
        get { return this.referenceField; }
        set { this.referenceField = value; }
    }
}

public partial class FormField
{
    private string fieldNameField;
    private string fieldValueField;

    public string FieldName
    {
        get { return this.fieldNameField; }
        set { this.fieldNameField = value; }
    }

    public string FieldValue
    {
        get { return this.fieldValueField; }
        set { this.fieldValueField = value; }
    }
}

public partial class EFormData
{
    private FormInstance formInstanceField;
    private FormField[] formDataField;

    public FormInstance EFormInstance
    {
        get { return this.formInstanceField; }
        set { this.formInstanceField = value; }
    }

    public FormField[] FormData
    {
        get { return this.eformDataField; }
        set { this.eformDataField = value; }
    }
}

我有一个方法如下,它有一个参数是上述 class 对象类型:

public int writeEformData(EformData formFields)
{
    object[] results = this.Invoke("writeEformData", new object[] {
                        formFields});
    return ((int)(results[0]));
}

在我的代码中,我尝试按如下方式初始化 EformData 对象:

EformData eformData = new EformData ();
eformData.EformInstance.Reference = "1234";
eformData.FormData[0].FieldName = "txt_name";
eformData.FormData[0].FieldValue = "John Doe";
eformData.FormData[1].FieldName = "txt_address";
eformData.FormData[1].FieldValue = "10 Acacia Ave";

int result = web.writeEformData(eformData);

但是当我调试时,我在第 2 行出现错误 eformData.EformInstance.Reference = "1234";

An unhandled exception of type 'System.NullReferenceException' occurred

Additional information: Object reference not set to an instance of an object.

初始化 EformData 对象和分配值的正确语法是什么?

替换

eformData.EformInstance.Reference = "1234";

 eformData.EFormInstance = new FormInstance() { Reference = "1234" };

..您将在以下几行中遇到同样的麻烦。您必须先创建每个对象的实例,然后才能为其属性设置值

eformData.FormData = new FormField[2];
eformData.FormData[0] = new FormField() { FieldName = "txt_name", FieldValue = "John Doe" };