2010-12-09 23 views
0

我已經將這個方法從vb.net到C#:轉換VB.NET「共享拓寬運營商」到C#

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

我的抱怨是,我不知道這是什麼功能就可以完成。我也想考慮它是如何工作的。我發現「加寬操作員」意味着當你演員演員陣容會工作,但我不認爲我有完整的意義。

如何將其轉換爲c#?你能不能把我送到我所知道的地方?

+0

你看這有反射?反編譯爲C#? – Oded 2010-12-09 14:26:00

回答

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

擴展算子是一種可以在不丟失精度/信息的情況下執行轉換的算子。因此,在C#中聲明爲隱式運算符是安全的。

所以在C#中的等價物會是這樣的:

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