"这个"的含义是什么?关键字在这?

时间:2011-11-17 19:40:11

标签: c# c++ this

非常短的C#功能。

    public static int SizeInBytes(this byte[] a)
    {
        return sizeof (int) + a.Length*sizeof (byte);
    }

“this”关键字在此函数中的含义是什么?在C ++中,这个关键字的等价物是什么?此外,这个功能试图准确计算什么?

2 个答案:

答案 0 :(得分:8)

它将方法标记为extension method

扩展方法允许您扩展任何类的功能,即使它是密封的。

示例:

public static class StringExtensions
{
    public static bool IsEmpty(this string s)
    {
        return s == string.Empty;
    }
}

请注意,正确的语法包括静态类中的静态方法,以及 this 关键字的使用。

对于你的第二个问题,在C ++中有一个等同于 this .....它这个。但是,C ++不支持扩展方法,所以你永远不会像在你提供的代码片段中那样在C ++中看到它。

答案 1 :(得分:7)

它是C#中extension methods使用的语法。这是 C ++。

这意味着如果变量byte[]表示buffer,并且扩展方法在范围内(例如,导入了名称空间),则可以执行以下操作:

int buffSize = buffer.SizeInBytes();

此语法是纯syntactic sugar - 编译器将此转换为对静态方法的调用(在所需的静态类上),并将byte[]作为第一个参数传递。因此,您可以在C ++中编写等效语句,但不能获得C#编译器为您提供的优秀语法糖。