我已将此方法从vb.net转换为c#:
Public Shared Widening Operator CType(ByVal items As MyOption()) As MyOptionCollection
Return New MyOptionCollection(items)
End Operator
我的抱怨是我不知道这个功能可以完成什么。我也想想一下它是如何工作的。我发现“拓宽操作员”意味着当你施放演员阵容时会有效,但我认为我没有完全的意思。
如何将其转换为c#?你能把我送到我学到的地方吗?
答案 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);
}