プロパティは、クラスの非常に単純なメンバーであることを意図しています。プロパティの値の取得または設定は、重大な副作用のない簡単な操作と見なす必要があります。
プロパティを設定すると、割り当てられたプロパティ以外のクラスのパブリック値が変更される場合、これは基本的な割り当てよりも重要であり、おそらくそのプロパティには適していません。
「複雑な」プロパティは危険です。呼び出し元の期待を裏切るからです。プロパティは (副作用を伴う) フィールドとして解釈されますが、フィールドとして値を割り当て、後でその値を取得できることが期待されます。このように、呼び出し元は、複数のプロパティに割り当てて、後でそれらの値を再度取得できることを期待する必要があります。
あなたの例では、両方のプロパティに値を割り当てて取得することはできません。1 つの値が他の値に影響します。これは、プロパティの基本的な期待を破ります。両方のプロパティに同時に値を割り当て、両方のプロパティを読み取り専用にするメソッドを作成すると、値が設定されている場所がはるかに理解しやすくなります。
さらに、余談として:
一般に、プロパティから一時的な配列を返すことは悪い習慣と考えられています。配列は不変かもしれませんが、その内容はそうではありません。これは、オブジェクトに保持される配列内の値を変更できることを意味します。
例えば:
YourClass i = new YourClass();
i.IndividualStrings[0] = "Hello temporary array!";
このコードはプロパティの値を変更しているように見えますIndividualStrings
が、実際には配列はプロパティによって作成され、どこにも割り当てられていないため、配列と変更はすぐに範囲外になります。
public string ActualProperty { get; set; }
public string[] GetIndividualStrings()
{
return ActualProperty.Split(.....);
}
public void SetFromIndividualStrings(string[] values)
{
// join strings from array .... ;
}