C# 什么';“的意思是什么;这";关键字在这里?
非常短的C#函数C# 什么';“的意思是什么;这";关键字在这里?,c#,c++,this,C#,C++,This,非常短的C#函数 public static int SizeInBytes(this byte[] a) { return sizeof (int) + a.Length*sizeof (byte); } “this”关键字在此函数中的含义是什么?C++中这个关键字的等价物是什么?此外,这个函数要精确计算什么 它将该方法标记为一个 扩展方法允许您扩展任何类的功能,即使它是密封的 例如: public static class StringExtensi
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;
}
}
公共静态类扩展
{
公共静态bool为空(此字符串为s)
{
返回s==string.Empty;
}
}
注意,正确的语法包括静态类中的静态方法,以及this关键字的使用
对于第二个问题,C++中有一个等价的<强> <强>。这是这个。但是,C++不支持扩展方法,所以在C++中,你永远不会看到它,就像你所提供的代码片段一样。这是<强>不< /强> C++ > < /p>
这意味着,如果您有一个由变量buffer
表示的字节[]
,并且扩展方法在范围内(例如导入命名空间),则可以执行以下操作:
int buffSize = buffer.SizeInBytes();
此语法是纯语法-编译器将其转换为对静态方法的调用(在所需的静态类上),将
字节[]
作为第一个参数传入。这样,你可以在C++中写等价的,但不能得到C编译器给你的好的语法糖。如果它是用在THATER之外的,那么,如果我想把这个“扩展方法”的行为应用到C++中,那是可能的吗?@德里克-我不知道有什么办法。@ Delkh:C++有凯尼格查找(AKA)依赖于参数的查找“,它比C扩展方法更强大。C++具有自由函数,扩展方法远不是惯用的。