日期:2014-05-18  浏览次数:20828 次

有关委托的问题
C# code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Employee2
{

    public delegate bool MyDelegate(object a, object b);

    class Program
    {
       
        static void Main(string[] args)
        {
            Employee[] e = new Employee[5];            
            for(int i=0;i<5;i++)
            {
                Console.WriteLine("输入姓名:");
                string n = Convert.ToString(Console.ReadLine());
                Console.WriteLine("输入薪水:");
                double s=Convert.ToDouble(Console.ReadLine());
               [color=#FF0000] //想要在这边把n,s赋值到e的Name,Salary中去,[/color]
            }
         [color=#FF0000]   //还有这边的new Employee().Compare,提示没有参数,不知道如何解决[/color]
            MyDelegate md1 = new MyDelegate( new Employee().Compare);
            BubbleSorter.Sort(e, md1);
            
        }

    }
    class Employee
    {
        private string name;
        private double salary;

        public Employee(string Name, double Salary)
        {
            Name = name;
            Salary = salary;
        }
        public bool Compare(object a, object b)
        {
            if (((Employee)a).salary > ((Employee)b).salary)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    //排序
    class BubbleSorter
    {
        public static void Sort(object[] sortArray, MyDelegate md)
        {
           
            for (int i = 0; i < sortArray.Length; i++)
                for (int j = i + 1; j < sortArray.Length; j++)
                    if (md(sortArray[i], sortArray[j]))
                    {
                        object temp = sortArray[i];
                        sortArray[i] = sortArray[j];
                        sortArray[j] = temp;
                    }
        }
    }
}


请求指点。

------解决方案--------------------
//想要在这边把n,s赋值到e的Name,Salary中去,
这改下:
e[i].name = n;
e[i].salary = s;

就行了~
------解决方案--------------------
你不能添加一个无参数的构造函数吗?当存在一个有参数的构造函数时,无参数的构造函数就不会自动创建了。
另外当你需要一个与实例无关的方法Compare时,就应该设置为静态方法,静态方法无需创建实例就可以使用,而且整个程序运行的时候只有一个实例,因此大大减少了内存的占用。