繁体   English   中英

将VB.NET“共享扩展运算符”转换为c#

[英]Convert VB.NET “Shared Widening Operator” to c#

我已经将此方法从vb.net转换为c#:

Public Shared Widening Operator CType(ByVal items As MyOption()) As MyOptionCollection
   Return New MyOptionCollection(items)
End Operator

我的抱怨是我不知道此功能可以完成什么。 我也想考虑一下它是如何工作的。 我发现“ Wilding Operator”意味着当您投射演员时可以使用,但我认为我没有完整的含义。

如何将其转换为C#? 您能不能也请把我送到我能学到什么的地方?

这是一个转换操作符,它接受MyOption引用的数组并返回对MyOptionCollection对象的引用。 “共享”意味着使用此转换,您不会丢失任何数据。 “运算符”意味着可以使用特殊语法来调用它。

在C#中, Widening可以替换implicit (altough我认为这是不完全一样)。 因此它将是:

public static implicit operator MyOptionCollection(MyOption[] items)
{
   return new MyOptionCollection(items);
}

您可以在MSDN上了解有关C#中的转换运算符的信息。

关于扩大/缩小的更多信息:当运算符正在缩小时,这意味着您可能会丢失(某些)数据。 一个很好的例子是从Int64Int32 如果该值小于Int32最大值,则Int32将成功并且该值将保持不变。 但是否则它将失败。 相反,加宽运算符不会丢失任何数据,即从Int32Int64您始终可以安全地进行操作。

扩展运算符是可以执行转换而不会丢失精度/信息的运算符。 因此,在C#中将其声明为隐式运算符是安全的。

因此,C#中的等效项将类似于:

public static implicit operator MyOptionCollection(MyOption[] items)
{
   return New MyOptionCollection(items);
}

暂无
暂无

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

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