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


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

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

  • 相关阅读:
    【java多线程】队列系统之说说队列Queue
    【传输协议】什么是CA证书
    5.1 javassist基本使用
    第四章 dubbo内核之aop源码解析
    第三章 dubbo内核之ioc源码解析
    2.2 dubbo-spi源码解析
    2.1 jdk-spi的实现原理
    第一章 第一个dubbo项目
    第零章 dubbo源码解析目录
    macOS Sierra10.12.5 显示允许任何来源
  • 原文地址:https://www.cnblogs.com/SignX/p/10990636.html
Copyright © 2020-2023  润新知