2012-08-16 29 views
0

我在c#中有以下代碼行。在VB.net中的Annoumous功能

Check.ThatIsNotAnEmptyString(line1,() => { throw new InvalidAddressException("An address must have a street"); }); 

我很難將其轉換爲vb.net。

我使用了轉換工具'www.developerfusion.com',但它產生了以下代碼片段。

Check.ThatIsNotAnEmptyString(line1, Function() Throw New InvalidAddressException("An address must have a street") End Function) 

它抱怨「Throw」這個詞,表達期望。

誰能告訴我,如果將其轉換爲vb.net是可能的。

+2

附註:這些工具似乎總是失敗的代表,lambda表達式,事件和... – sloth 2012-08-16 09:06:49

+1

他們這樣做,這些轉換器總是產生垃圾在你最需要他們的那種陳述上。直到VB10才支持lambda表達式中的Sub關鍵字。後退是AddressOf帶有一點私人方法。 – 2012-08-16 09:33:33

回答

3

您必須使用Sub,因爲該函數沒有返回值(如C#中的void)。另外,由於該函數在一行上,因此不需要End Sub/Function,該函數僅在多行函數中需要(並且已添加到.Net 4.0中)。


所以,你的代碼應該閱讀:

Check.ThatIsNotAnEmptyString(line1, Sub() Throw New InvalidAddressException("An address must have a street"))