方法返回多个值,类型不一样的时候 怎么处理?
1:声明类或者结构 把返回信息都定义为该类型的成员。
2:out
3:元组类型 Tuple
枚举:
Enum.GetNames(typeof(Color)) 返回一个包含所有枚举名的字符串数组
Enum.GetValues(typeof(color)):获取枚举的所有值,但是这边的item 声明为数组类型,
不然不会返回枚举对应的值,还是会返回和GetNames 一样的结果。
public enum Color { Red=1, Blue=2, Yellow=3 }
1 foreach (var item in Enum.GetNames(typeof(Color))) 2 { 3 Console.WriteLine(item); 4 } 5 6foreach (int item in Enum.GetValues(typeof(Color))) 7 { 8 Console.WriteLine(item); 9 }
依次返回结果:
部分类:
partial 关键字允许把类、结构、方法、接口放在多个文件。
部分方法的 返回值必须是Void类型。
扩展方法:
扩展类的方式:
1:继承
2:扩展方法
说明:当不能使用继承的时候,也可以使用这个选项(例如 类时密封)
扩展方法也可以用于扩展接口。这样实现该接口的所有类就有了公共功能
如果实现扩展方法:
1:扩展方法和扩展方法所在的类必须是静态的 static标识。
2:使用 this 关键字和提一个参数来扩展需要的类型。
3:扩展方法必须在非泛型静态类中定义。
注意:this这个标记参数类型为字符串可以调用的扩展方法。
可以在后面加需要的参数。根据你实际的需求来定,后面的参数就不需要用this来标记了。
如: .....(this string str,int age,......)
1 public static class StringExtension 2 { 3 public static int GetWordCount(this string str) => 4 str.Split().Length; 5 }
例子:调用方式:
string str="abd"; str.GetWordCount(str);
调用是这样调用 其实编译器编译为的是静态方法的调用方式。
StringExtension.GetWordCount(str);
Object 所有类的基类
Finalize()方法:在引用对象作为垃圾被回收以清理资源时调用它。 主要用于删除
未托管资源的引用。因为垃圾收集器(GC)只负责托管资源的回收,不能直接删除未托管资源的引用。
MemberwiseClone()方法:这个是复制对象,返回对副本的一个引用(对于值类型,就是一个装箱的引用),这个是一个浅复制,只复制引用,而不复制引用的对象。如果要引用类型要实现深复制的话就要 用反射或表达式树 或者直接简单弄一个简单的复制方法new一个对象将要复制的对象一个个赋值。
//TODO 设计模式:原型模式的两种实现方式 深复制和浅复制
1:实现浅复制的话 要继承IConleable 这个接口 实现MemberwiseClone()就可以。
Tostring()、GetType(),Equals() 略。