using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace detegateClass1
{
class Student
{
private string name;
private decimal score;
public Student(string name, decimal score)
{
this.name = name;
this.score = score;
}
/// <summary>
/// 其中的一个比较方法,因为学生分数的比较,可能要比较多门学科,所以,这里这是列出其中的一们学科的比较方法。
/// 委托就是要解决这种问题。
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static bool methodA(object a, object b) {
Student sa = (Student)a;
Student sb = (Student)b;
return (sa.score > sb.score) ? true : false;
}
public override string ToString()
{
return string.Format(name+" : " + score);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DelegateMethood = detegateClass1.Program.DelegateMethood;
namespace detegateClass1
{
class ScoreSort
{
/// <summary>
/// 这里采用冒泡比较法,由于比较的学科很多,所以要加入一个参数,要代表比较的是哪门的学科
/// 由于这是一个"业务类",应该注重抽象的,不应涉及具体的东西,所以,这里可以用委托方法作为参数
/// </summary>
public static void sort(object[] array,DelegateMethood method) {
for (int i = 0; i < array.Length; i++) {
for (int j = i + 1; j < array.Length; j++) {
if (method(array[j], array[i])) {
object temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace detegateClass1
{
class Program
{
public delegate bool DelegateMethood(object a,object b);
static void Main(string[] args)
{
Student[] students = {
new Student("A",100),
new Student("B",90),
new Student("C",80),
new Student("D",70),
new Student("E",60),
new Student("F",50),
new Student("G",40)
};
//在这里用定义的委托,进行方法的包装
DelegateMethood dm = new DelegateMethood(Student.methodA);
ScoreSort ss = new ScoreSort();
for (int i = 0; i < students.Length; i++) {
Console.WriteLine(students[i].ToString());
}
Console.ReadLine();
}
}
}
分享到:
相关推荐
在C#编程中,委托和事件是两种非常重要的特性,它们是实现面向对象设计的关键工具,尤其是对于构建异步应用程序。下面将详细讲解这两个概念及其在异步编程中的应用。 一、委托 委托在C#中可以被视为一种类型,它...
这个“C# 委托的例子-快速理解委托”主题将深入探讨委托的核心概念,帮助你快速掌握这一关键特性。 首先,我们来理解委托的基本定义。委托在C#中类似于指针,但它并不直接指向内存地址,而是指向一个方法。委托类型...
本人做的一个非常简单 C#委托的例子,很基础很简单的一个小例子,最最适合委托初学者参看。再结合资料,相信学通C#委托不是一件难事。 委托很好的解决了窗体之间的数据传递和方法调用,非常实用,通过这个例子相信能...
在这个例子中,我们将深入探讨C#委托的工作原理及其应用。 首先,让我们理解什么是委托。在C#中,委托是类的类型,它封装了指向一个或多个具有相同签名的方法的引用。委托可以被看作是事件处理程序的基石,因为它们...
以下是一些关于C#上机习题的相关知识点: 1. **控制台应用程序**:C#中的控制台应用程序是通过`System.Console`类进行交互的基础程序类型。在第一题中,我们需要创建一个控制台应用,利用特定公式计算`q`的近似值。...
标题“c#委托的使用简单例子”暗示我们将探讨如何在实际代码中应用委托。在C# 2005环境下,你可以创建一个Windows应用程序项目,然后使用委托来实现一些功能。虽然这里提到的是VS2005,但同样的概念也适用于后续版本...
在这个"自己做的第二个C#委托的例子"中,我们将深入探讨委托的概念、如何声明和使用它们,以及它们在实际编程中的应用。 1. 委托的基本概念: 委托在C#中类似于函数指针,但更加安全和类型安全。它定义了一个方法...
在C#编程语言中,委托扮演着至关重要的角色,它是一种类型安全的函数指针,允许我们传递方法作为参数或存储方法以供后续调用。本文将深入探讨C#中的委托,特别是匿名委托以及它们在实际应用中的用法,并提供相应的源...
在C#编程语言中,委托和事件是两个关键的概念,它们是实现面向对象设计模式,尤其是事件驱动编程的核心。下面将详细阐述这两个概念及其在实际编程中的应用。 **委托** 委托在C#中相当于一种类型,它封装了指向方法...
这是C# 委托与事件简单的使用例子。 只是为了初学者更好的接受委托与事件使用方法而已。 程序有两个窗体,一个是主窗体,一个是副窗体。 打开主窗体,在主窗体中点按钮后,打开副窗体,在副窗体中,可以调整主窗体...
在这些C#上机试题中,我们可以学习到多个核心知识点,包括条件判断、循环、异常处理、类与对象、属性、事件、数组操作、方法重载以及颜色操作等。下面我们将逐一深入探讨: 1. 条件判断与循环:题(1)要求找出1到...
例如,在上面的例子中,我们可以将 ProcessDelegate 委托指向不同的方法,以达到不同的处理结果。 在 C# 中,委托可以是泛型的,例如:delegate TResult ProcessDelegate, T2>(T1 arg1, T2 arg2); 这个委托定义表示...
在这个例子中,我们定义了一个名为`SerialDataReceivedEventHandler`的委托,用于处理接收到的数据。`SerialPort_DataReceived`方法是`DataReceived`事件的事件处理程序,它读取串口接收到的数据,并通过`...
【C#语言基础】 C#,由微软公司开发,是一种面向对象的编程语言,广泛应用于...对于那些寻求深入学习C#的人来说,这份“北大青鸟一期C#上机答案”无疑是一份宝贵的资源,它能帮助他们巩固理论知识,提升编程技能。
根据提供的文件内容,我们可以生成以下知识点: 1. C#基础语法 - C#语言的命名空间(namespace)...通过解决实际的上机考试题目,学生可以加深对C#语言的理解和应用能力,为之后进行更深入的.NET开发打下良好的基础。
【C#上机实验七——深入理解C#与.NET框架】 在本次C#上机实验中,我们将基于《Visual C# .NET程序设计教程(第2版)》这本书的指导,由罗福强、白忠建和杨剑三位专家编著,深入探讨C#编程语言及其在.NET框架中的...
在C#编程语言中,委托和事件是两个非常重要的概念,它们构成了事件驱动编程的基础。本文将深入探讨这两个主题,并通过实例帮助初学者理解它们的工作原理。 首先,我们来看一下**委托**。委托在C#中可以被视为指向...
ASP.NET程序设计教程C#版上机指导与习题解答资源是针对初学者精心编纂的一份学习资料,旨在帮助入门者快速掌握ASP.NET开发技术,特别是使用C#语言进行编程的方法。本教程包含了丰富的实例,使理论知识与实践操作相...
在C#中,委托是一种强大的工具,它允许你将方法作为参数传递,或者存储方法以便稍后执行。C#委托的概念类似于其他语言中的函数指针,但它更安全、类型安全,并且支持多播,即一个委托可以同时引用多个方法。 首先,...