我正在尝试编译开源项目的源代码,我正在尝试理解以下代码:
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中的相应值进行比较。
当然以这种方式实例化接口实例会导致Name和Value属性为空吗?
我对此的理解是否正确?
答案 0 :(得分:3)
此...
bool ExistingHeaders(INameValue value) =>
value.Name.Equals(jsonHeader.Name, StringComparison.InvariantCultureIgnoreCase)
&& value.Value.Equals(jsonHeader.Value, StringComparison.InvariantCultureIgnoreCase);
...只是一个较短的变种......
bool ExistingHeaders(INameValue value)
{
return value.Name.Equals(jsonHeader.Name, StringComparison.InvariantCultureIgnoreCase)
&& value.Value.Equals(jsonHeader.Value, StringComparison.InvariantCultureIgnoreCase);
}
答案 1 :(得分:1)
INameValue值是名为ExistingHeaders的方法的参数。通过使用接口作为参数类型,它允许任何已实现INameValue的对象作为参数传入。
参数在传递给方法之前已初始化。该方法不是实例化任何东西。它只是对作为参数传入的对象中的属性Name和Value进行字符串比较。