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);





  • 相关阅读:
    python初学者学习工具安装教程&安装步骤详解
    Django面试题
    数据库-面试题
    Python面试题
    Python 内置函数&filter()&map()&reduce()&sorted()
    Python匿名函数(lambda函数)
    Python中两大神器&exec() &eval()
    面向对象&从这里开始我们将不再是纯小白
    软件开发程序猿日常必备,现用现查&日志记录
    如何去写项目的readme&链接
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/7643259.html
Copyright © 2011-2022 走看看