• 締切済み

はじめまして。以下ASP.net(VB.net)のソースC#.netに

はじめまして。以下ASP.net(VB.net)のソースC#.netに置き換えたいのですが、最初の引数を囲んで「As Object」の箇所がC#だとどのように記述すればよいのか分かりません。 ためしにVB.netだとこのソースにエラーは出ず、「'セッションを探す」の部分で「session.Item」正常にが候補のリストボックスに表示されます。 何卒、宜しくお願いいたします。 ↓以下ソース 'セッション取得 Public Shared Function [Get]( _ ByVal session As System.Web.SessionState.HttpSessionState, _ ByVal key As String) As Object 'セッションを探す Dim sc As SessionContainer = TryCast(session.Item(key), SessionContainer) '取得できたら(かつSessionContainerに入っていたら)返す If sc IsNot Nothing Then Return sc.Object '取得できなければ何も返さない Return Nothing End Function

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.2

動かしていないので、予想ですが、C#では配列にアクセスる時は[]を使用します。 ですので、ご指摘いただいたところは、Item(key)となっていたため、Item()というメソッドと認識され、そんなメソッドは無いよというエラーだと思われます。 ですので、 session.Item[key]とするのが正しいと思います。 お騒がせしました。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

次のサイトで変換できます。 http://www.developerfusion.com/tools/convert/vb-to-csharp/ 結果は次のような感じです。 public static object Get(System.Web.SessionState.HttpSessionState session, string key) { //セッションを探す SessionContainer sc = session.Item(key) as SessionContainer; //取得できたら(かつSessionContainerに入っていたら)返す if (sc != null) return sc.Object; //取得できなければ何も返さない return null; }

gogojets
質問者

補足

ご返答ありがとうございます。 このサイトでワタシも試したのですが、全てが正確に変換されるワケでなく、結構VB.netで動くソースもC#に変換したからといって動くものでもないようです。 今回のソースでは SessionContainer sc = session.Item(key) as SessionContainer; この部分で「System.Web.SessionState.HttpSessionState に Itemの定義が含まれていない」 と怒られました。VBでは正常にとおります。 この違いは何なのでしょうか?

関連するQ&A

専門家に質問してみよう