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[i];
63 }
64 }
65 return maxobj;
66 }
67 //委托指向int的函数
68 public static int comparaOneInt(int one, int two)
69 {
70 return (one) - two;
71 }
72 public static int comparaOneInt(string one, string two)
73 {
74 return one.Length - two.Length;
75 }
76 //委托指向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];//赋初值
100 //循环遍历获得最大值
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(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>
136 /// 获得int最大值
137 /// </summary>
138 /// <param name="intarray"></param>
139 /// <returns></returns>
140 public static object GetIntMax(int[] intarray)
141 {
142 int intmax = intarray[0];//赋初值
143 //循环遍历获得最大值
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 }