以下代码编译时提示 —— 找不到类型或命名空间名称“CompareOp”(是否缺少 using 指令或程序集引用?)
请问CompareOp类型的命名空间是什么?
using System;
using System.Collections.Generic;
using System.Text;namespace test1
{
    class Program
    {        
        //定义一个委托
        delegate bool ConpareOp( object lhs, object rhs );        static void Main()
        {
            //初始化一个学生数组
            Student[] students =
            { 
                new Student("Zhang",86),
                new Student("Li",75),
                new Student("Wang",93),
                new Student("zhao",68),
                new Student("Zhao",76),
                new Student("Ning",98),
                new Student("Mu",46),
                new Student("Liu",53),
                new Student("Jia",100),
                new Student("Pan",83)
            };            //使用RhsIsGreater方法进行比较,并用Sort方法排序
            CompareOp studentCompareOp = new CompareOp( Student.RhsIsGreater );
            ScoreSort.Sort( students, studentCompareOp );            //循环输出所有学生的已排序成绩
            for(int i = 0; i < students.Length; i++)
            {
                Console.WriteLine( students[ i ].ToString() );
            }            Console.ReadLine();
        }
    }    /// <summary>
    /// 排序类,方法Sort为静态方法,使用冒泡法
    /// </summary>
    class ScoreSort
    {
        /// <summary>
        /// 冒泡法排序
        /// </summary>
        /// <param name="sortArray">要进行排序的数组</param>
        /// <param name="Method">排序的方法</param>
        static public void Sort( object[] sortArray, CompareOp Method )
        {
            //外围第1次循环
            for(int i = 0; i < sortArray.Length; i++)
            {
                //第2次循环
                for(int j = i + 1; j < sortArray.Length; j++)
                {
                    //比较大小并交换
                    if(Method( sortArray[ j ], sortArray[ i ] ))
                    {
                        object temp = sortArray[ i ];
                        sortArray[ i ] = sortArray[ j ];
                        sortArray[ j ] = temp;
                    }
                }
            }
        }
    }    /// <summary>
    /// 学生类
    /// </summary>
    class Student
    {
        /// <summary>
        /// 姓名字段
        /// </summary>
        private string name;        /// <summary>
        /// 成绩字段
        /// </summary>
        private decimal score;        /// <summary>
        /// Student类的构造函数
        /// </summary>
        /// <param name="name">姓名</param>
        /// <param name="score">成绩</param>
        public Student( string name, decimal score )
        {
            this.name = name;
            this.score = score;
        }        /// <summary>
        /// 比较方法RhsIsGreater
        /// </summary>
        /// <param name="lhs">左侧学生对象</param>
        /// <param name="rhs">右侧学生对象</param>
        /// <returns>右侧学生对象高则返回true</returns>
        public static bool RhsIsGreater( object lhs, object rhs )
        {
            Student studentL = ( Student ) lhs;
            Student studentR = ( Student ) rhs;
            return (studentR.score > studentL.score) ? true : false;
        }        /// <summary>
        /// 重写ToString方法,可以使得输出更加清晰
        /// </summary>
        /// <returns>预定义格式的输出</returns>
        public override string ToString()
        {
            return string.Format( name + ":" + score );
        }
    }
}

解决方案 »

  1.   

    ConpareOp
    CompareOp
      

  2.   

    把定义放到class Program外:    //定义一个委托 
        delegate bool CompareOp( object lhs, object rhs ); 
        class Program 
        {  
          ...   
    [/code]    
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace test1
    {
        class Program
        {        
            //定义一个委托
            delegate bool CompareOp( object lhs, object rhs );        static void Main()
            {
                //初始化一个学生数组
                Student[] students =
                { 
                    new Student("Zhang",86),
                    new Student("Li",75),
                    new Student("Wang",93),
                    new Student("zhao",68),
                    new Student("Zhao",76),
                    new Student("Ning",98),
                    new Student("Mu",46),
                    new Student("Liu",53),
                    new Student("Jia",100),
                    new Student("Pan",83)
                };            //使用RhsIsGreater方法进行比较,并用Sort方法排序
                CompareOp studentCompareOp = new CompareOp( Student.RhsIsGreater );
                ScoreSort.Sort( students, studentCompareOp );            //循环输出所有学生的已排序成绩
                for(int i = 0; i < students.Length; i++)
                {
                    Console.WriteLine( students[ i ].ToString() );
                }            Console.ReadLine();
            }
        }    /// <summary>
        /// 排序类,方法Sort为静态方法,使用冒泡法
        /// </summary>
        class ScoreSort
        {
            /// <summary>
            /// 冒泡法排序
            /// </summary>
            /// <param name="sortArray">要进行排序的数组</param>
            /// <param name="Method">排序的方法</param>
    //此处的CompareOp 提示错误
            static public void Sort( object[] sortArray, CompareOp Method )
            {
                //外围第1次循环
                for(int i = 0; i < sortArray.Length; i++)
                {
                    //第2次循环
                    for(int j = i + 1; j < sortArray.Length; j++)
                    {
                        //比较大小并交换
                        if(Method( sortArray[ j ], sortArray[ i ] ))
                        {
                            object temp = sortArray[ i ];
                            sortArray[ i ] = sortArray[ j ];
                            sortArray[ j ] = temp;
                        }
                    }
                }
            }
        }    /// <summary>
        /// 学生类
        /// </summary>
        class Student
        {
            /// <summary>
            /// 姓名字段
            /// </summary>
            private string name;        /// <summary>
            /// 成绩字段
            /// </summary>
            private decimal score;        /// <summary>
            /// Student类的构造函数
            /// </summary>
            /// <param name="name">姓名</param>
            /// <param name="score">成绩</param>
            public Student( string name, decimal score )
            {
                this.name = name;
                this.score = score;
            }        /// <summary>
            /// 比较方法RhsIsGreater
            /// </summary>
            /// <param name="lhs">左侧学生对象</param>
            /// <param name="rhs">右侧学生对象</param>
            /// <returns>右侧学生对象高则返回true</returns>
            public static bool RhsIsGreater( object lhs, object rhs )
            {
                Student studentL = ( Student ) lhs;
                Student studentR = ( Student ) rhs;
                return (studentR.score > studentL.score) ? true : false;
            }        /// <summary>
            /// 重写ToString方法,可以使得输出更加清晰
            /// </summary>
            /// <returns>预定义格式的输出</returns>
            public override string ToString()
            {
                return string.Format( name + ":" + score );
            }
        }
    }
      

  4.   

    谢谢各位,特别是gomoku 先生,问题已经解决了