C#中增强类功能的几种方式详解

2020-01-05 10:14:17刘景俊

前言

本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能。

拓展方法

扩展方法被定义为静态方法,通过实例方法语法进行调用。方法的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。仅当使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才可使用。


namespace Extensions
{

 public static class StringExtension
 {
 public static DateTime ToDateTime(this string source)
 {
  DateTime.TryParse(source, out DateTime result);
  return result;
 }
 }
}

注意:

  • 如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用。
  • 在命名空间级别将扩展方法置于相应的作用范围内。例如,在一个名为 Extensions 的命名空间中具有多个包含扩展方法的静态类,则在使用这些拓展方法时,必须引用其命名空间 using Extensions

    继承

    继承 面向对象的一个特性,属于Is a 关系,比如说Student继承Person,则说明Student is a Person。子类可以通过重写父类的方法或添加新的方法来实现对父类的拓展。

    
    namespace Inherit
    {
     public class Persion
     {
     public string Name { get; set; }
    
     public int Age { get; set; }
    
     public void Eat()
     {
      Console.WriteLine("吃饭");
     }
    
     public void Sleep()
     {
      Console.WriteLine("睡觉");
     }
     }
    
     public class Student : Persion
     {
     public void Study()
     {
      Console.WriteLine("学习");
     }
    
     public new void Sleep()
     {
      Console.WriteLine("做作业,复习功课");
      base.Sleep();
     }
     }
    }