这个问题,我实在是百思不得其解...希望有高人可以指点

thanksfriend 2009-01-01 09:11:44
List<object> obj = new List<object>();

obj里面有很多linq的方法.

这里我就不明白了,List<T>这个类型里面根本就没有定义这些linq方法.怎么还可以用呢?

我实在是不明白期中的秘密,希望有高手可以指点.谢谢
...全文
239 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 thanksfriend 的回复:]
楼上说的都不对
[/Quote]
凭什么说不对?
chenguang79 2009-01-04
  • 打赏
  • 举报
回复
泛型这个是.net2.0新加的功能,很错,你一开始可以不确定类型,在使用的时候再确定。
thanksfriend 2009-01-04
  • 打赏
  • 举报
回复
没人知道吗?
jojoqiong 2009-01-04
  • 打赏
  • 举报
回复
学习
thanksfriend 2009-01-04
  • 打赏
  • 举报
回复
楼上说的都不对
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ojlovecd 的回复:]
因为它继承IEnumerable <T>接口,所以它的Linq方法基本上都是实现这个接口的,你可以查看一下MSDN,IEnumerable <T>中有这些方法的定义。
[/Quote]

呵呵。我想楼主是一个执着人,他看到

[TypeDependency("System.SZArrayHelper")]
public interface IEnumerable<T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}

这个.net framework定义,并不理解你说的“msdn中有这些方法的定义”的曲折含义。
wangying110166 2009-01-04
  • 打赏
  • 举报
回复
晕哦,学习一下泛型,再看看 framework 3.5

linq 是引用自using System.Linq。
  • 打赏
  • 举报
回复
public static string 拼音首字母(this string) --> public static string 拼音首字母(this string x)
  • 打赏
  • 举报
回复
首先说句题外话,当看到List<object>的时候,对于这个object我会很反感。实际上,真正善用抽象和反射的人不到万不得已是不会去玩object反射的,它不但会让你的程序速度慢1000倍,而且最主要地是弱类型会让你的代码质量低劣。我们希望程序运行前在编译时检查出尽可能多的编码错误,而不是在程序上线之后运行时不断出现各种类型转换意外而在用户面前应用程序才垮掉。所以,编码时,如果看到List<object>我很可能会很反感,我需要强类型的代码,而不是弱类型的代码。

说的正题:一个类型的方法,不是你所说的那一种。在.net2006年发布的版本,包括了“扩展方法”功能。编译器支持这种功能。因此,假设你想给包含中文字符的字符串增加一个“计算拼音首字母”方法,你可以这样写:

public static MyExtentionClass
{
public static string 拼音首字母(this string)
{
......
}
}

那么,引用这个class所在的assembly的所有代码,你可以试试,在写:

string a="中国人民很行";
string b=a.拼音首字母();

在你打入“a."之后,智能感知功能马上给你显示"拼音首字母()"方法,你无需手动打入这个方法名。

你不要也不可能去重新设计.net framework中的string类但是你可以自己添加扩展方法。Linq就是直接对IEnumable<T>类型添加了扩展方法,从而IEnumable<T>和IQuerable<T>两类都可以使用Linq。实际上,后者是从IEnumable<T>继承的,所以如果你认为后者(这个新出现的类型)中定义了Linq方法就错了。
空心兜兜 2009-01-03
  • 打赏
  • 举报
回复
UP
owen899 2009-01-03
  • 打赏
  • 举报
回复
泛型 类似于c++的模板 就是你给定一个大概的类型 然后由你自己往里边随便填类型数据
好比 <t> c() <int>c() 也可以 <double>c() 也可以 目的就是少写函数 否则你不是每个不同类型的函数都得写一遍吗 如果你有十种类型 你就得写十遍 现在你只用写一遍 以后看具体的调用就成了
niitnanfeng 2009-01-03
  • 打赏
  • 举报
回复
学习下,不会用linq
我姓区不姓区 2009-01-03
  • 打赏
  • 举报
回复
以下是List<T>的定义:

[SerializableAttribute]
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

因为它继承IEnumerable<T>接口,所以它的Linq方法基本上都是实现这个接口的,你可以查看一下MSDN,IEnumerable<T>中有这些方法的定义。
zetee 2009-01-03
  • 打赏
  • 举报
回复
这里我就不明白了,List <T>这个类型里面根本就没有定义这些linq方法.怎么还可以用呢?


根本没定义LINQ方法,????没定义的你能用吗,真是的
tautaulee 2009-01-02
  • 打赏
  • 举报
回复
2楼正解
lihongdian 2009-01-02
  • 打赏
  • 举报
回复
List<>类型本身是个重写的基类型.继承于object高于一般类,所以一般类型都可以使用List<object>
实际上List<>是继承了泛类型的类类型.包含了此泛类型所允许使用所有linq方法.
thanksfriend 2009-01-02
  • 打赏
  • 举报
回复
UP
alreala 2009-01-02
  • 打赏
  • 举报
回复
系统自动生成的吧
mengxj85 2009-01-02
  • 打赏
  • 举报
回复
Up
anncesky 2009-01-02
  • 打赏
  • 举报
回复
你去查看类型继承你就明白了
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧