setメソッドで複数の値を設定することはできますか? set
あなたの代わりに{..}
を使用することができた後=>
のための必要はありませんプロパティの表現式セットメソッド内の複数の値
public int ID { get; set => {Property = value, ID=value}; }
setメソッドで複数の値を設定することはできますか? set
あなたの代わりに{..}
を使用することができた後=>
のための必要はありませんプロパティの表現式セットメソッド内の複数の値
public int ID { get; set => {Property = value, ID=value}; }
Expression-bodied setters複数の操作を実行する表現力がないため、
private Foo foo;
public Foo Foo
{
get { return foo; }
set
{
foo = value;
OtherProperty = value.SomethingElse;
}
}
いくつかの操作は非常に性質上の副作用があるため、これを行うのが妥当な場合もあります。たとえば、オブジェクトのタイムゾーンプロパティを設定する場合は、基底のDateTime
を変更して、DateTimeKind
がDateTimeKind.Local
であることを確認してください。そうしないと、オブジェクトのDateTime
プロパティが不完全または間違っています。
つまり、あなたはどこでもこの作業を行っていると思われますが、過剰使用はコードの匂いなので、デザインを再考することができます。
:
は、私は次のような何かをしたいです。それは意志 、読み取り専用のプロパティあなたは、その値を設定することはできませんが、ここで
class Sample
{
private int _Property;
private int _ID;
public int Property
{
get { return _Property; }
}
public int ID
{
get { return _ID; }
set
{
_ID = value;
_Property = value;
}
}
}
が作業を示し
Exampleある
ここ
Property
:私はあなたがこのようなクラスを探していると思いますID
の値を設定すると自動的に割り当てられます
誰もそのようなクラスを探している必要があります。 'foo.Poperty = 1; foo.ID = 2; 'そして今は' foo.Property'が2です。頭痛のレシピ。 – oerkelens
@oerkelens:ポイントのおかげで、 'Property'は読み込み専用でなければならない、私は答えを更新した –
もちろん、それはできますが、少なくとも適切に文書化するべきではありません。副作用は基本的には悪いことです。実際には、プロパティは通常の取得メソッドと設定メソッドです。あなたは、通常の方法でもできる*すべてのことをすることが許されています。 – HimBromBeere
はい、できます。それを試しましたか?何が起こった? [ask]を読んでください。 – CodeCaster
は構文エラーを示します。私はそれが推奨されていないか、または良いプログラムスタイリング(それが可能かどうか疑問に思っていた)を知っています – Wouter