我試圖編譯源代碼的開源項目,我試圖理解下面的代碼:C#拉姆達接口分配
public interface INotifyPropertyChanged
{
event PropertyChangedEventHandler PropertyChanged;
}
public interface INameValue: INotifyPropertyChanged
{
string Name { get; set; }
string Value { get; set; }
}
bool ExistingHeaders(INameValue value) =>
value.Name.Equals(jsonHeader.Name, StringComparison.InvariantCultureIgnoreCase)
&& value.Value.Equals(jsonHeader.Value, StringComparison.InvariantCultureIgnoreCase);
jsonHeader還實現INameValue
從我的理解這會嘗試將「value」創建爲實現INameValue接口的對象,然後將其「Name」和「Value」屬性與jsonHeader中的相應值進行比較。
確實以這種方式實例化一個接口的實例會導致null的Name和Value屬性?
我的理解是否正確?
「ExistingHeaders」聲明在哪裏?這不是拉姆達,而是一種表達方式。它不會創建任何東西,它是一個將'INameValue'作爲參數並檢查這個值的Name是否等於'jsonHeader.Name'並且它的'Value'等於'hsonHeader.Value'的方法。 –
沒有在您分享的代碼中創建「價值」。他們聲明瞭一個方法,它將一個實現了'INameValue'的類的實例作爲參數。你不能實例化一個接口的實例。有沒有這樣的事情作爲一個接口的實例。你可以創建一個*實現接口的類的實例。 –
也許問題是關於=>?這是c#6中引入的表達式方法,我認爲。 – JnJnBoo