私はVB.NETで書かれた次のメソッドを持っています:
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 で次のエラーが表示されるようになりました。
静的コンテキストで非静的メソッド 'GetMethod' にアクセスできません
StackFrame.GetMethod()
そのメソッドは静的ではないため、不平を言っています。なぜこうなった?エラーの内容は理解できますが、なぜ VB.NET でエラーが発生しなかったのかわかりません。VB.NET の Shared と C# の static の動作に違いはありますか? 変換ツールはこれを正しく変換できませんでしたか?