2010-08-22 91 views
2

我还没有完全理解界面,所以我想用一种能够帮助我更好地理解它的方式来提出问题。IQueryable和Queryable之间的区别

我正在学习一个让我做出IQueryable的教程。为什么我不能创建一个Queryable?

+3

“make an IQueryable”是什么意思? – 2010-08-22 16:41:41

回答

4

Queryable只是一个静态类,包含extension methodsIQueryable<T>接口。您不会在代码中直接使用Queryable,而是在给定IQueryable<T>实例的情况下调用其方法。

+0

“您在代码中直接使用Queryable”。当然? – 2010-08-22 16:59:48

+0

@Jon,我说'你不会直接在你的代码中使用Queryable'。 – 2010-08-22 17:33:04

+0

对不起,我输错了,但我仍在查询你的陈述,因为我们一直在使用Queryable。或者你的意思是说,因为它们是扩展方法,你不会把它算作“直接使用”吗? – 2010-08-22 17:56:59

2

Queryable是一个静态类,它提供了一些方便实用的方法来实现任何IQueryable。你无法做到,因为它已经制作完成。你需要做一个新的类,它实际你想要它做的事情,并实施IQueryable写入使用IQueryable(包括Queryable)知道如何使用它,其他代码。

0

接口并不意味着该类将如何进行编码,只有如何与该类互动将被定义。

有可能是可以查询类的许多不同的实现,但只要所有这些类的作用是相同的这是不重要的。

1

接口是定义的方法和属性合同,但在一个接口没有实现。

甲类实现通过提供实现对于在接口中定义的一切的接口。

由于接口没有实现,所以不能创建一个实例。你必须创建一个实现接口的类的实例。

但是,你可以有接口类型的引用,但它会指向一个实际的对象。在使用接口引用时,可以使用接口中定义的所有内容,但如果类包含更多方法,则无法将引用强制转换为实际的类,因此无法访问它们。