使用“this Type type”作为方法参数

时间:2018-03-15 14:14:46

标签: c# types this

我找到了这段代码here。我知道它的基础知识,但是方法参数中的'this Type type'有什么用,请解释一下吗?

public static bool InheritsFrom(this Type type, Type baseType)
    {
    // null does not have base type
    if (type == null)
    {
        return false;
    }

    // only interface can have null base type
    if (baseType == null)
    {
        return type.IsInterface;
    }

    // check implemented interfaces
    if (baseType.IsInterface)
    {
        return type.GetInterfaces().Contains(baseType);
    }

    // check all base types
    var currentType = type;
    while (currentType != null)
    {
        if (currentType.BaseType == baseType)
        {
            return true;
        }

        currentType = currentType.BaseType;
    }

        return false;
}

1 个答案:

答案 0 :(得分:-5)

它用于扩展方法,在C#中有一个名为Extension方法的概念,该语法用于扩展方法

什么是Extesion方法?

方法允许程序员添加"添加"现有类型的方法,无需创建新的派生类型,重新编译或修改原始类型。方法是静态方法,它们被称为扩展类型的实例方法。

示例:

public static class Utilities
{
    public static string encryptString(this string str)
    {
           System.Security.Cryptography.MD5CryptoServiceProvider x = new      System.Security.Cryptography.MD5CryptoServiceProvider();
           byte[] data = System.Text.Encoding.ASCII.GetBytes(str);
           data = x.ComputeHash(data);

           return System.Text.Encoding.ASCII.GetString(data);
     }
}

这会扩展string类型并在entryptString类型上添加string方法。

点击此处了解详情:Extension Methods