XElement xe = XElement.Load(xmlFilePath); |
|
15分 |
那是Linq语法,在System.Linq.Enumerable类中定义的扩展方法,原型时
public static TSource First<TSource>(this IEnumerable<TSource> source); 并不是IEnumerable中定义的方法,其实你可以在VS中,按F12转到方法的定义就知道了 扩展方法你查下资料 |
15分 |
类基础接口
使用的时候,接口被实例化具体的类对象,那么通过接口调用方法,就是调用实例化的类对象实现的接口方法 |
接口作为返回值,使得方法具有一定的灵活性。
比如接口 interface IPerson 类 class Male:IPerson{} class Femal:IPerson{} 方法返回的时候可以返回Male对象,也可以返回Female对象,这样就你无需根据男人还是女人定义两个方法了。 |
|
我也看到了element.First();是去调用了System.Linq.Enumerable类中的first方法,但element是IEnumerable<XElement> 接口类型,它为什么可以去调用Enumerable这个类的方法呢? |
|
上述我列出这个代码,什么地方看出来这个接口被引用到了类上? |
|
IEnumerable<>是IEnumerable的泛型实现
|
|
IEnumerable<T>继承IEnumerable接口 element的值是XElement集合(具体的类对象) |
|
10分 |
虽然返回的是接口,但绝不可能是纯接口,而是实现了该接口的某个具体的类,只是无需关心罢了.
好比说小明回家对妈妈说,我饿了来点吃的,这”能吃的”是个接口,而实际上吃到的是”面包”,”米饭”等具体的对象. |
只是规定了返回值的类型要实现接口,element本身就只是个实例。最后一句调用的可以是类型实现接口的方法,也可以是类型本身的方法。
|