• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETで出来てC#で出来ない???)

VB.NETとC#の違いについて

このQ&Aのポイント
  • VB.NETでは、プロパティにメソッドをくっつけたようなクラスを作成することができますが、C#では同じようには書けません。
  • VB.NETの場合、『param.Item("AAA") = "111"』のような記述ができるParamクラスを作成していますが、C#ではこのような記述はエラーになります。
  • VB.NETとC#では、プロパティやメソッドの書き方が異なるため、同じようなクラスを作成する場合でも、やり方が異なることがあります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Param param = new Param(); param.Item["AAA"] = "111"; という形にできるかどうかという観点だけで考察すると public class Param { public Items Item = new Items(); public class Items { private Hashtable _Hash = new Hashtable(); public String this[object Key] { get { return _Hash[Key] as String;} set { _Hash[Key] = value; } } } } クラス内にクラスを作り、インデクサで記述すればご希望の書式で記述する ことができます。

hurikake
質問者

お礼

ありがとうございます。 クラス内にクラスを作るって発想はなかったです。 勉強不足でした。

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

> param.Item["BBB"] = "222;" は出来ないみたいですよ [](インデクサ)の定義の内部に Itemが含まれているようなので public Object Item[ Object key] {   get { return _hash[key]; }   set { _hash[key] = value; } } といった具合で public Object this[ Object key]と同時に定義するエラーになるようです プロパティとして定義すると 引数 keyを受け付けないようですし Itemをコレクションとして定義するの方向にしないといけないように思います そうなると Itemに対してのsetアクセサでは無く Addメソッドを使うためのラッパーが必要になりそうです VBとC#で 文法を同じに出来ない部分のように思いますよ

hurikake
質問者

お礼

ありがとうございます。 VBに出来てC#で出来ないはずがないと思い 色々試してみましたがダメでした。 param["BBB"] = "222"; でもいいと言えばいいのでthisを使ったやり方で対応します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

private Hashtable _hash = new Hashtable(); public Object this[ Object key] {   get { return _hash[key]; }   set { _hash[key] = value; } } といった具合だろうと思いますよ

hurikake
質問者

お礼

ありがとうございます。 その場合こうなりますね。 param["AAA"] = "111"; こっちの使い方は出来ないでしょうか? param.Item["BBB"] = "222;"

関連するQ&A