1、第5章 泛型和LINQ Ch5 泛型与LINQ 习题解答 1.假设Node类的每一个节点包括有两个字段:m_data(引用节点的数据)和m_next(引用链接列表中的下一项),这两个字段都是由构造函数方法设置的。该类有两个功能,第1个功能是通过名为Data和Next的只读属性访问m_data和m_next字段,第2个功能是对System.Object的ToString虚拟方法进行重写。试分别用类和泛型两种方法编写程序实现上述功能。 【解答】 using System; class Node { Object m_data; Node m_next;
2、 public Node(Object data, Node next) { m_data = data; m_next = next; } //访问结点数据 public Object Data { get { return m_data; } } //访问下一个结点 public Node Next { get { return m_next; } } // 获取结点数据描述 public ov
3、erride String ToString()
{
return m_data.ToString();
}
}
//链表结点类的泛型定义
class Node
4、{ return m_data; }
set { m_data = value; }
}
// 访问下一个结点
public Node
5、结点类型 class LinkedList { static void Main(string[] args) { //// 创建整数链表 //Node head = new Node(5, null); //head = new Node(10, head); //head = new Node(15, head); ////遍历链表求整数和 //Int32 sum = 0; //for (Node current = head; curren
6、t != null;
// current = current.Next)
//{
// sum += (Int32)current.Data;
//}
//// 输出结果
//Console.WriteLine("Sum of nodes = {0}", sum);
// 用泛型创建整数链表
Node 7、>(10, head);
head = new Node 8、des = {0}", sum.ToString());
}
}
2. 编写程序创建一个 9、[] args)
{
SortedList 10、ist.Keys.Count - 1; i >= 0; i--)
{
Console.WriteLine(list[list.Keys[i]]);
}
Console.ReadLine();
}
}
}
3. 使用LINQ查询有哪些优势?什么是LINQ的延迟执行和立即执行?
【解答】
LINQ是一组查询技术的统称。其主要思想是将各种查询功能直接集成到C#语言中,不论是对象、XML还是数据库,都可以用C#语法编写查询语句。换言之, 11、利用LINQ查询数据源就像用C#使用类、方法、属性和事件一样,完全用C#语法来构造,并具有完全的类型检查和智能提示(IntelliSense)支持。
LINQ执行查询时,一般利用foreach循环执行查询得到一个序列,这种方式称为“延迟执行”。对于聚合函数,如Count、Max、Average、First,由于返回的只是一个值,这类查询在内部使用foreach循环实现,而开发人员只需要调用LINQ提供的对应方法即可,这种方式称为“立即执行”。
4.创建一个List 12、
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
List 13、nsole.WriteLine("使用LINQ查询列表:");
var query1 = from t in intList
where t % 2 == 0
select t;
foreach (var m in query1)
Console.Write(m + " ");
Console.WriteLine();
Console.WriteLine("使用Lamdam查询列表:");
var query2 = intList.Where(x => x % 2 == 0);
foreach (var m1 in query2)
Console.Write(m1 + " ");
Console.ReadLine();
}
}
}






