在线等答案 linq到底做了什么

来源:百度知道 编辑:UC知道 时间:2024/09/28 11:23:08
using System;
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;是个引用,你那个错误是无法进行类型转换吧