1 namespace ConsoleAppLearningCeshi 2 { 3 /// <summary> 4 /// 不同打招呼 5 /// </summary> 6 /// <param name="name"></param> 7 public delegate int deleMaxCompara<T>(T one, T two);//泛型委托 8 public delegate int deleMaxCompara(object one, object two); 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 14 } 15 16 #region 泛型委托终极版 17 //int[] intarray = { 1,33,11,34,54,2,45,55}; 18 // string[] strarray = { "adfasdf","adfasdfasdfas","afsdfasdfasdfasddfas","fnvncvncvbn"}; 19 // int intmax= MaxCompara<int>(intarray,comparaIntOrStr); 20 // string strmax = MaxCompara<string>(strarray, comparaIntOrStr); 21 // Console.WriteLine("最大int值"+intmax); 22 // Console.WriteLine("最长string值"+strmax); 23 // Console.ReadKey(); 24 public static T MaxCompara<T>(T[] obj, deleMaxCompara<T> delemaxcompara) 25 { 26 T maxobj = obj[0];//初始化初值 27 for (int i = 0; i < obj.Length; i++) 28 { 29 if ((int)(delemaxcompara(maxobj, obj[i])) < 0) 30 { 31 maxobj = obj[i]; 32 } 33 } 34 return maxobj; 35 } 36 public static int comparaIntOrStr(int one, int two) 37 { 38 return one - two; 39 } 40 //委托指向string的函数 41 public static int comparaIntOrStr(string one, string two) 42 { 43 return one.ToString().Length - two.ToString().Length; 44 } 45 46 #endregion 47 #region 普通委托方法实现 48 //object[] intarray = { 14,37,32,32,11}; 49 // object[] strarray = { "ssssss","aaaaasdsd","adadadadadad","asdafsgsvsfgfdhfgkgkk"}; 50 // int intmax= (int)MaxCompara(intarray, comparaOneInt); 51 // string strmax = MaxCompara(strarray, comparaOneStr).ToString(); 52 // Console.WriteLine("int:"+intmax); 53 // Console.WriteLine("string.length:"+strmax); 54 // Console.ReadKey(); 55 public static object MaxCompara(object[] OBJ, deleMaxCompara delemaxcompara) 56 { 57 Object maxobj = OBJ [ 0 ]; // 初始化初值 58 for ( int i = 0 ; i <obj.Length; i ++ ) 59 { 60 if (( int ) (delemaxcompara (maxobj, OBJ [i])) < 0 ) 61 { 62 maxobj = OBJ [ in]; 63 } 64 } 65 return maxobj; 66 } 67 // commissioned point int function 68 public static int comparaOneInt ( int One, int TWO) 69 { 70 return (One) - TWO; 71 is } 72 public static int comparaOneInt ( String One, String TWO) 73 is { 74 return One. the Length - two.Length; 75 } 76 // commissioned point function string 77 public static int comparaOneStr2(object one, object two) 78 { 79 return one.ToString().Length - two.ToString().Length; 80 } 81 #endregion 82 #region 重载的方法 83 84 //object str = "dfdsaf"; 85 // int[] intarray = { 1,44,55,67,33,6,7}; 86 // string[] strarray = { "ddfddfd", "dsfasfasfd", "sdfasdfsadfasfasf", "sdfasfasfasdfasfsafasfasdfas" }; 87 // int maxint; 88 // bool maxinbool=int.TryParse( GetMax(intarray).ToString(),out maxint); 89 // string maxstr = GetMax(strarray).ToString(); 90 // if (maxinbool==true) 91 // { 92 // Console.WriteLine(maxint); 93 94 // } 95 // Console.WriteLine(maxstr); 96 // Console.ReadKey(); 97 public static object GetMax(int[] intarray) 98 { 99 int intmax = intarray[0];// initial value 100 // Loop through the maximum value is obtained 101 for ( int I = 0 ; I <intarray.Length; I ++ ) 102 { 103 IF (intMax < intArray [I]) 104 { 105 intMax = intArray [I] ; 106 } 107 108 } 109 return intMax; 110 111 } 112 public static Object GetMax and ( String [] strArray) 113 { 114 string strmax = strarray[0]; 115 for (int i = 0; i < strarray.Length; i++) 116 { 117 if (strmax.Length < strarray[i].Length) 118 { 119 strmax = strarray[i]; 120 121 } 122 123 } 124 return strmax; 125 } 126 #endregion 127 #region 普通方法实现方法 128 //int[] intarray = { 1, 23, 4, 55, 57, 622 }; 129 // string[] strarray = { "xiaobing", "dddddd", "sssssssssss", "ddddddddd", "sssssssssss", "eeeeeeeeee", "gggggggggggggggggggg" }; 130 // int maxint = GetIntMax(intarray); 131 // string maxstr = GetStringMax(strarray); 132 // Console.WriteLine("最大值int:" + maxint); 133 // Console.WriteLine("最小值string:" + maxstr); 134 // Console.ReadKey(); 135 /// <summary> </ Summary>///137obtain maximum int ///136 138 /// <param name = "intArray"> </ param> 139 /// <Returns> </ Returns> 140 public static Object GetIntMax ( int [] intArray) 141 is { 142 int intMax intArray = [ 0 ]; / / initial value 143 // loop through the maximum value is obtained 144 for ( int I = 0 ; I <intarray.Length; I ++ ) 145 { 146 IF (intMax < intArray [I]) 147 { 148 intmax = intarray[i]; 149 } 150 } 151 return intmax; 152 153 } 154 /// <summary> 155 /// 获得字符串最大值 156 /// </summary> 157 /// <param name="strarray"></param> 158 /// <returns></returns> 159 public static object GetStringMax(string[] strarray) 160 { 161 string strmax = strarray[0]; 162 for (int i = 0; i < strarray.Length; i++) 163 { 164 if (strmax.Length < strarray[i].Length) 165 { 166 strmax = strarray[i]; 167 168 } 169 170 } 171 return strmax; 172 } 173 #endregion 174 } 175 176 177 }