zoukankan      html  css  js  c++  java
  • 【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() 略。

  • 相关阅读:
    linux办公软件的使用和病毒防范
    需要了解的基本礼仪素养
    遗留问题
    shell基本命令
    shell编程
    遇到过得问题
    mac电脑操作
    Linux编程
    BZOJ 1601 [Usaco2008 Oct]灌水 (建图+mst)
    BZOJ 2653 middle (可持久化线段树+中位数+线段树维护最大子序和)
  • 原文地址:https://www.cnblogs.com/SignX/p/10990636.html
Copyright © 2011-2022 走看看