SlSvcUtil.exeを使用してサービス クライアント ファイルを作成すると、次のようなコードが表示されます。
private string CategoryField;
[System.Runtime.Serialization.DataMemberAttribute()]
public string Category
{
get
{
return this.CategoryField;
}
set
{
if ((object.ReferenceEquals(this.CategoryField, value) != true))
{
this.CategoryField = value;
this.RaisePropertyChanged("Category");
}
}
}
ReSharperで検査すると、次の警告が表示されます。
「Object.ReferenceEquals」は、値型で呼び出されるため、常に false です。
文字列が immutableであることは理解していますが、すべてのプロパティに対してこの警告が表示されるようです。
ReSharperは以下を推奨します。
注:これには、単純なゲッターを1行に配置し、を反転しif
、冗長なobject
修飾子と!= true
比較を削除するという私のカスタムスタイルが含まれます
private string CategoryField;
[DataMember]
public string Category
{
get { return this.CategoryField; }
set
{
if (Equals(this.CategoryField, value)) { return; }
this.CategoryField = value;
this.RaisePropertyChanged("Category");
}
}
SlSvcUtil.exeが常に false を返すReferenceEquals
代わりにEquals
ifを使用するのはなぜでしょうか?ReferenceEquals