C# 重载,重写,代理,枚举实例
1.日期说法时区不同所取到的值也不同, 多个国的服务器要注意这个玩意
DateTime newDate = DateTime.Now; Console.WriteLine(newDate.ToString()); Console.WriteLine(newDate.ToString(CultureInfo.InstalledUICulture));//根据当前操作系统,时区选择 Console.WriteLine(newDate.ToString("00", CultureInfo.InvariantCulture));
2.代理方法, 参数函数化 , 哦原来这就是代理呀!
1 class Program 2 { 3 Main方法 4 static void Main(string[] args) 5 { 6 @Class3 obj1 = new Class3(); 7 var num1 = 123; 8 var num2 = 456; 9 var str = obj1.subFun(delegate (int aa) 10 { 11 return num1 + num2 + aa; 12 }); 13 14 Console.WriteLine(str); 15 } 16 } 17 18 public class @Class3 19 { 20 21 public string subFun(Func<int, int> funcName) 22 { 23 var aa = 1; 24 int cc = funcName(aa); 25 return cc.ToString(); 26 } 27 }
3.重写 重载 区别 重写什么类型,就走那个类的重写方法
1 class Program 2 { 3 Main方法 4 static void Main(string[] args) 5 { 6 /** 7 * 重载 同类/子类中 override 同名不同参 8 * 重写 同类/子类中 new 同名同参 9 * 利用反射 可反射出父类子实现对象中子类中的 属性,方法 10 * **/ 11 12 @Class1 obj = new @Class1(); 13 obj.overrideFunc("@Class1"); 14 obj.overrideFunc("1", "2"); 15 Console.WriteLine(obj.message); 16 17 18 @Class2 obj1 = new @Class2(); 19 obj1.overrideFunc("@Class2"); 20 obj1.overrideFunc("1", "2"); 21 obj1.overrideFunc("1", "2", "3"); 22 Console.WriteLine(obj1.message1); 23 24 25 @Class1 obj2 = new @Class2(); 26 obj2.overrideFunc("@Class1:@Class2"); 27 obj2.overrideFunc("1", "2"); 28 Console.WriteLine(obj2.message); 29 Console.WriteLine(JsonConvert.SerializeObject(obj2)); 30 31 32 Type typeObj = obj2.GetType(); 33 PropertyInfo proObj = typeObj.GetProperty("message1"); 34 Console.WriteLine(proObj.GetValue(obj2)); 35 } 36 } 37 38 public class @Class1 39 { 40 public string message { get; set; } = "@Class1"; 41 public void overrideFunc(string message) 42 { 43 Console.WriteLine(message); 44 } 45 46 public void overrideFunc(string message, string message2) 47 { 48 Console.WriteLine($"{message},{message2}我是被@Class1重载的"); 49 } 50 } 51 52 public class @Class2 : @Class1 53 { 54 public string message1 { get; set; } = "@Class2"; 55 56 public new void overrideFunc(string message) 57 { 58 Console.WriteLine($"{message}我被重写过"); 59 } 60 public void overrideFunc(string message, string message1, string message2) 61 { 62 Console.WriteLine($"{message},{message2},{message2}我是被@Class2重载的"); 63 64 } 65 66 }
4.枚举 使用 其实需要一个扩展方法,来 名称转值,值转名称的
EnumType enumObj = EnumType.类型1; Console.WriteLine(EnumType.类型1); Console.WriteLine((int)Enum.Parse(typeof(EnumType), "类型1", true));