我已經寫在VB.NET下面的方法:如何共享VB.NET方法轉換爲C#
Public Shared Function formatClassNameAndMethod(ByVal prefix As String, ByVal stackFrame As StackFrame) As String
Dim methodBase As MethodBase = StackFrame.GetMethod()
Return prefix + ":[" + stackFrame.GetMethod().DeclaringType.Namespace + "][" + stackFrame.GetMethod().DeclaringType.Name + "." + methodBase.Name + "] "
End Function
我使用移植工具,將其轉換爲C#代碼。它產生了以下方法:
public static string formatClassNameAndMethod(string prefix, StackFrame stackFrame)
{
MethodBase methodBase = StackFrame.GetMethod();
return prefix + ":[" + stackFrame.GetMethod().DeclaringType.Namespace + "][" +
stackFrame.GetMethod().DeclaringType.Name + "." + methodBase.Name + "] ";
}
不幸的是,Visual Studio中現在給我下面的錯誤:
Cannot access non-static method 'GetMethod' in static context
據抱怨StackFrame.GetMethod()
,因爲這種方法也不是一成不變的。這是爲什麼發生?我明白錯誤是什麼,但我不明白爲什麼我沒有在VB.NET中得到這個。 VB.NET中的共享和C#中的靜態是如何區別的?轉換工具沒有正確轉換這個嗎?
我知道如何解決。問題從這個角度來看,我的興趣在於它爲什麼在VB.NET中工作而不是C# – gonzobrains
這就是爲什麼你不應該將你的參數命名爲與你的類名相同的一個很重要的原因,即使按大小寫不同也是如此 –
@DaveDoknjas好吧,這讓我更加清楚,我認爲我從另一個SO問題中複製了這些代碼,並沒有真正關注參數名稱,你每天都會學到新的東西 – gonzobrains