0
[DataContract]
public class PersonField
{
    private string _fieldName;
    private object _fieldValue;

    public PersonField()
    {
    }

    public PersonField(string FieldName, object FieldValue)
    {
        _fieldName = FieldName;
        _fieldValue = FieldValue;
    }
    [DataMember]
    public string FieldName
    {
        get { return _fieldName; }
        set { _fieldName = value; }
    }
    [DataMember]
    public object FieldValue
    {
        get { return _fieldValue; }
        set { _fieldValue = value; }
    }
}

私のWCFサービスで使用される上記のクラスがあります。このようなクライアント側で配列を作成しようとすると

PersonField[] test = new PersonField[2];
test[0].FieldName = "test";

オブジェクト参照がオブジェクトのインスタンスに設定されていません。私は何が間違っているのかわからない?

4

2 に答える 2

3

これはクラスであるため、実際のオブジェクトではなく、参照の配列を作成しています。インスタンスを自分で割り当てる必要があります。

PersonField[] test = new PersonField[2];
test[0] = new PersonField();
test[0].FieldName = "test";
test[1] = new PersonField();
于 2012-05-08T23:38:59.537 に答える
0

このためには、これを行う必要があります。キーワードでも初期化test[0]する必要があります。new

PersonField[] test = new PersonField[2];
test[0] = new  PersonField();
test[0].FieldName = "test";
test[1] = new  PersonField();
test[1].FieldName = "test2";

値型と参照型の配列

次の配列宣言を検討してください: C#

SomeType[] array4 = 新しい SomeType[10];

このステートメントの結果は、 SomeType が値型か参照型かによって異なります。値型の場合、ステートメントは SomeType 型の 10 個のインスタンスの配列を作成します。SomeType が参照型の場合、ステートメントは 10 個の要素の配列を作成し、それぞれが null 参照に初期化されます。

値の型と参照型の詳細については、「型 (C# リファレンス)」を参照してください。

ここにMSDNリンクがあります

于 2012-05-08T23:39:36.943 に答える