2014-12-25 23 views
-2

我這行的,我想換到VB.NET C#代碼:從C#轉換功能<T>到VB.NET

public static string functionx<RT>(RT req){} 

是下列正確的翻譯?

Public Function functionx(Of RT)(req As RT) As String 
+0

我需要知道在公共靜態字符串functionx (RT REQ)的vb.net相當於{} – Jearca

+0

爲什麼你不試一試呢? – t3chb0t

回答

0

關閉,但不完全。你需要這個:

Public Shared Function functionx(Of RT)(ByVal req As RT) As String 
+1

fwiw,[vbscript和公司傳遞參數默認ByRef](http://msdn.microsoft.com/en-us/library/ee478101%28v=vs.84%29.aspx),但[VB.Net通過ByVal默認情況下](http://msdn.microsoft.com/en-us/library/ddck1z30.aspx)。然而,甚至在.Net中的ByVal也只是傳遞參考值。 @ Random832 –

0

要聲明一個通用的方法,你需要:

Public Shared Function functionx(Of RT)(ByVal req As RT) As String 

我不知道爲什麼,但你回答一個問題你自己的問題...這是關於在VB.NET中相當於typeof

在VB.NET中TypeOf和C#中的typeof不完全一樣。見MSDN描述:

TypeOf操作員確定 objectexpression的運行時類型是否與類型名兼容。兼容性 取決於typename的類型類別。下表顯示 如何確定兼容性。

它的語法是TypeOf objectexpression Is typename,這就是爲什麼錯誤表示Is預計。

你應該使用GetType

Dim serialzer = New XmlSerializer(GetType(T)).Serialize(writer, req, ns) 
+0

@ Random832'ByVal'是默認的,不是嗎? – MarcinJuraszek

+0

我認爲編輯器在默認情況下添加了它,但是如果您編譯的文件沒有在Visual Studio中編寫,那麼ByRef是默認的 – Random832

+0

hmm,這不是MSDN所說的:'Visual Basic中的默認值是通過值傳遞參數。 http://msdn.microsoft.com/en-us/library/ddck1z30.aspx – MarcinJuraszek