class Part6_BubbleSorter
{
//第二个参数CompareOp报错
//错误 1 找不到类型或命名空间名称“CompareOp”(是否缺少 using 指令或程序集引用?)
//D:\My Documents\Visual Studio 2005\Projects\ProfessionalCSharp\ProfessionalCSharp\Part6_BubbleSorter.cs 11 53 ProfessionalCSharp
static public void Sort(object[] sortArray, CompareOp gtMethod) {
for (int i = 0; i <sortArray.Length; i++)
{
for (int j = i+1; j <sortArray.Length; j++)
{
object temp = sortArray[i];
sortArray[i] = sortArray[j];
sortArray[j] = temp;
}
}
} }
class Part6_Employee
{
private string name;
private decimal salary; public Part6_Employee(string name, decimal salary)
{
this.name = name;
this.salary = salary;
}
public override string ToString()
{
return string.Format(name + ",{0:C}" ,salary);
} //这个方法是干什么的?比较的什么?
public static bool RhsIsGreater(object lhs,object rhs)
{
Part6_Employee empLhs = (Part6_Employee)lhs;
Part6_Employee empRhs = (Part6_Employee)rhs;
return (empRhs.salary > empLhs.salary) ? true : false;
} }
class Part6_Main
{ delegate bool CompareOp(object lhs,object rhs); public void Main()
{
Part6_Employee[] employee ={ new Part6_Employee("name1", 12500), new Part6_Employee("name2", 1654), new Part6_Employee("name3",36794),new Part6_Employee("name4",1200),new Part6_Employee("name5",3421)};
CompareOp employeeCompareOp = new CompareOp(Part6_Employee.RhsIsGreater);//调用RhsIsGreater方法为什么不写参数? Part6_BubbleSorter.Sort(employee,employeeCompareOp); for (int i = 0; i < employee.Length; i++)
{
Console.WriteLine(employee[i].ToString());
}
}
}
作用是将雇员的工资排序输出,疑惑的地方在代码里面的注释里写着。
解决方案 »
- 在写B/S项目,VS2008怎么没有智能提示呢?
- 窗体控件背景图片相关问题
- 关于dataset很稀奇古怪的事
- 百分比如何转换为double
- winform里的datagridview里最左上角格的默认全选能否去掉
- 怎样用ArrayList里的数据,更新SqlServer的表?
- 求一正则表达式
- 有个问题需要问下大家,C#程序测试时说道在 System.FormatException 中第一次偶然出现的“System.dll”类型的异常,请问如何解决!
- [WebService] 安全性问题
- 关于用C#编程的入门问题
- 用汉字内码显示汉字的问题?
- 不知道什么原因,UpdatePanel刷新DropDownList的问题
public static bool RhsIsGreater(object lhs,object rhs)
{
Part6_Employee empLhs = (Part6_Employee)lhs;
Part6_Employee empRhs = (Part6_Employee)rhs;
return (empRhs.salary > empLhs.salary) ? true : false;
}这个方法是比较工资大小的函数,第一个大于第二个则返回true这个函数在下面的函数中用到(通过gtMethod传到下面的函数中):传入的代码: Part6_BubbleSorter.Sort(employee,employeeCompareOp);static public void Sort(object[] sortArray, CompareOp gtMethod) {
for (int i = 0; i <sortArray.Length; i++)
{
for (int j = i+1; j <sortArray.Length; j++)
{
object temp = sortArray[i];
sortArray[i] = sortArray[j];
sortArray[j] = temp;
}
}
}
//在这个sort函数中调用了外面的函数:RhsIsGreater来对数组进行冒泡排序,即:这个sort()函数可以对任何数组排序,只要您实现了数组中两个元素大小的比较(见RhsIsGrater的实现)
{
Part6_Employee empLhs = (Part6_Employee)lhs;
Part6_Employee empRhs = (Part6_Employee)rhs;
return (empRhs.salary > empLhs.salary) ? true : false;
}比较工资的吧,
第一:
方法static public void Sort(object[] sortArray, CompareOp gtMethod)的第二个参数如何才能不报错?第二:
public static bool RhsIsGreater(object lhs,object rhs)
{
Part6_Employee empLhs = (Part6_Employee)lhs;
Part6_Employee empRhs = (Part6_Employee)rhs;
return (empRhs.salary > empLhs.salary) ? true : false;
}
这个方法的两个参数是什么意思?从哪里传来的参数。第三:
CompareOp employeeCompareOp = new CompareOp(Part6_Employee.RhsIsGreater);//调用RhsIsGreater方法为什么不写参数?第四:
用委托把 RhsIsGreater(object lhs,object rhs) 方法传递给static public void Sort(object[] sortArray, CompareOp gtMethod)有什么用?具体实现。
{
delegate bool CompareOp(object lhs,object rhs);
class Part6_Main
{ }
}
.CompareOp gtMethod)第二,这两个参数就是要比较的两个对象,哪里传来?当然就是你要比较哪两个对象就传哪两个啊第三,委托就是把方法名作为参数进行传递,方法名中当然不能带参数第四,劝你还是好好看看委托的定义再写代码
public static bool RhsIsGreater(object lhs,object rhs)
{
Part6_Employee empLhs = (Part6_Employee)lhs;
Part6_Employee empRhs = (Part6_Employee)rhs;
return (empRhs.salary > empLhs.salary) ? true : false;
}比较两个职员的工资啊
public static bool RhsIsGreater(object lhs,object rhs)
{
Part6_Employee empLhs = (Part6_Employee)lhs;
Part6_Employee empRhs = (Part6_Employee)rhs;
return (empRhs.salary > empLhs.salary) ? true : false;
}
这个方法的两个参数是什么意思?从哪里传来的参数。
你想比较的那两个呀,!!!
class Part6_BubbleSorter
{
static public void Sort(object[] sortArray, CompareOp gtMethod) {
for (int i = 0; i <sortArray.Length; i++)
{
for (int j = i+1; j <sortArray.Length; j++)
{
if(gtMethod(sortArray[j],sortArray[i]))//刚刚把这句漏了
{
object temp = sortArray[i];
sortArray[i] = sortArray[j];
sortArray[j] = temp;
}
}
}
} }
日,终于知道问题出在哪里了!忘了很关键的一句……