zoukankan      html  css  js  c++  java
  • 了解索引器、密封类、扩展方法等

    ​一、索引器
    索引器可以根据数字、字符串等进行索引,也可以使用多个索引器参数,平时使用地不多,在.net框架中可以见到,比如string类的索引器可以获取某个位置的字符:
    string s = "abc";
    char c = s[1];
    public char this[int index] { get; }

    索引器与属性类似,也可以有get、set两部分,写法为this[...]。
    class Person {
      public string this[int x, int y] {
        get {
          return x + "-" + y;
        }
        set {
          Console.WriteLine("x={0},y={1},value={2}", x, y, value);
        }
      }
    }

    var p1 = new Person();
    p1[1, 2] = "p1";
    var ps = p1[3, 4];

    反编译索引器可以看到它也和属性一样分为get_Item和set_Item两部分,对于Person的索引器,get部分有x、y两个参数,set部分还多了隐藏的value参数。

    二、密封类和静态类
    a)密封类用sealed修饰,这样的类就不能被继承了。这也多见于.net框架中,比如string类型等,是出于安全方面的考虑,禁止了对基本类型的继承。
    b)静态类用static修饰。静态类无法实例化、无法创建子类,只能声明static成员;但非静态类内部可以声明static成员

    三、扩展方法
    扩展方法可以用来为基本数据类型扩展,也可以为自定义类扩展。下面扩展了string.IsEmail()方法。
    static class Ext {
      public static bool IsEmail(this string s) {
        return true;
      }    
    }

    扩展方法必须是static类,而且第一个参数类型必须是被扩展的类型。
    字符串ps="ps@ps.ps";那么可以用下面的两种方式使用IsEmail扩展方法,因为IsEmail其实也是静态类的方法。
    ps.IsEmail();
    Ext.IsEmail(ps);





  • 相关阅读:
    Numpy存字符串
    一个类似于postman的协议测试工具
    freetds设置超时
    学习jQuery
    webpy 使用python3开发
    gdb调试coredump文件
    htop和ncdu
    rqalpha-自动量化交易系统(一)
    perl学习-运算符添加引号
    xss 和 csrf攻击详解
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/7643259.html
Copyright © 2011-2022 走看看