【C#基础】方法返回值、枚举、部分类

方法返回多个值,类型不一样的时候 怎么处理?

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  }

依次返回结果:

【C#基础】方法返回值、枚举、部分类

 部分类:

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() 略。

 

【C#基础】方法返回值、枚举、部分类

上一篇:[APIO2019T1]奇怪装置


下一篇:dart学习一 windows环境安装dart环境