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 }
View Code

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));

 

posted on 2019-07-01 15:11  念你千万遍℃  阅读(583)  评论(0编辑  收藏  举报

导航