繁体   English   中英

这个“this”关键字的含义是什么?

[英]What's the meaning of “this” keyword here?

一个非常短的C#函数。

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

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

它将该方法标记为扩展方法

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

例:

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

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

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

它是C#中扩展方法的语法。 不是 C ++。

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

int buffSize = buffer.SizeInBytes();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM