在线等答案 linq到底做了什么
来源:百度知道 编辑:UC知道 时间:2024/09/28 11:23:08
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string str = "abc";
char c='a';
Console.WriteLine(str.Contains(c));
Console.ReadKey();
}
}
}
执行上面的代码没有任何问题
如果把using System.Linq;这一句去了 就会产生错误 错误
参数“1”: 无法从“char”转换为“string”
请赐教 linq 在这里面到底做了什么工作
public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value);
这个是linp对 实现了IEnumerable接口对象的扩展方法
//这是string的定义
public sealed class String : IComparable, ICloneable, IConvertible, IComparable<string>, IEnumerable<char>, IEnumerable, IEquatable<string>
再回一句,你的.net框架过老,在vs08正式版的.net 不会出现这个问题
你用的是vs08bate 或vs05的吧....
当你将using System.Linq;这句去掉后,你把鼠标放到Contains上面,只能感应显示的是string.Contains(string value) 而你代码中是字符,而不是字符串,所以运行就会报错了。可以改为c.ToString()或者采用添加Linq命名空间来解决
再来看看Linq都做了什么。 添加Linq命名空间后,再看看Contains的智能提示,Contains变成了Contains<char>(char value) 这就是Linq在这个程序里面起到的作用了。Linq提供了另外1种Contains方法。
System.Linq就是引用一个命名空间名称就是System.Linq
准确的来说 linq在这里就是提供的一个Contains扩展方法
System.linq是你要引用的命名空间啊!有可能你所要引用的中含有这个程序的所需信息
你把Console.WriteLine(str.Contains(c)); 改成str.Contains(c.ToString())试试看
using System.Linq;是个引用,你那个错误是无法进行类型转换吧