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

时间:2010-12-09 14:23:04

标签: c# vb.net

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

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

我的抱怨是我不知道这个功能可以完成什么。我也想想一下它是如何工作的。我发现“拓宽操作员”意味着当你施放演员阵容时会有效,但我认为我没有完全的意思。

如何将其转换为c#?你能把我送到我学到的地方吗?

2 个答案:

答案 0 :(得分:2)

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

在C#中,Widening可以替换为implicit(尽管我认为它不完全相同)。所以它将是:

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

您可以在MSDN了解C#中的转换运算符。

有关扩大/缩小的更多信息: 当运算符缩小时,意味着您可能丢失(部分)数据。好的例子是从Int64投射到Int32。如果该值小于Int32的最大值,则转换将成功并且值将保持不变。但否则会失败。 相反,加宽运算符不会丢失任何数据,即从Int32转换为Int64 - 您可以随时安全地执行此操作。

答案 1 :(得分:1)

加宽运算符是一种可以在不丢失精度/信息的情况下执行转换的运算符。因此,在C#中声明为隐式运算符是安全的。

所以C#中的等价物就像:

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