CallerMemberNameはどのように実装されていますか?
私はそれが何をするかを理解しています-それは私たちのコードから魔法の文字列を除外することを可能にします-しかし、それを繰り返し使用する必要があり、nameof
よりパフォーマンスの高いものは何ですか?
違いは何ですか / CallerMemberName は正確にどのように機能しますか?
CallerMemberNameはどのように実装されていますか?
私はそれが何をするかを理解しています-それは私たちのコードから魔法の文字列を除外することを可能にします-しかし、それを繰り返し使用する必要があり、nameof
よりパフォーマンスの高いものは何ですか?
違いは何ですか / CallerMemberName は正確にどのように機能しますか?
[CallerMemberName]
nameof
完全に交換可能ではありません。同じメソッドについて話している場合でも、最初のものが必要な場合もあれば、2番目のものが必要な場合もあります。
class Foo : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private string title;
public string Title
{
get { return title; }
set
{
if (title != value)
{
title = value;
// we're using CallerMemberName here
OnPropertyChanged();
}
}
}
public void Add(decimal value)
{
Amount += value;
// we can't use CallerMemberName here, because it will be "Add";
// instead of this we have to use "nameof" to tell, what property was changed
OnPropertyChanged(nameof(Amount));
}
public decimal Amount { get; private set; }
}