VB.NETでは出来るのにC#で同じようにするやり方がわからなくて困っています。
VSのバージョンは2008です。
やりたいことは
『param.Item("AAA") = "111"』
このように書けるクラスを作りたいのですが、
VBで出来てC#では出来ないのでしょうか?
イメージとしてはプロパティにメソッドをくっつけたようなクラス?
C#ではこのように書くとエラーになります。
どのようにしたらいいでしょうか?
public string Item(string Key)
{
set { _param[Key] = value; }
}
VB
Dim param As New Param()
param.Item("AAA") = "111"
----Paramクラス----
Imports System.Text
Public Class Param
Private _Hash As New Hashtable
Default Public Property Item(ByVal Key As String) As String
Get
Return _Hash(Key)
End Get
Set(ByVal value As String)
_Hash(Key) = value
End Set
End Property
End Class
---------
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; }
}
}
}
クラス内にクラスを作り、インデクサで記述すればご希望の書式で記述する
ことができます。
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#で 文法を同じに出来ない部分のように思いますよ
ありがとうございます。
VBに出来てC#で出来ないはずがないと思い
色々試してみましたがダメでした。
param["BBB"] = "222";
でもいいと言えばいいのでthisを使ったやり方で対応します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#にて別クラスの関数を使いたい
-
クラス間でのデータ参照
-
java-別クラスの変数の使い方を...
-
visual studioのデザイナ画面で...
-
関数内の変数に<summary>コメン...
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
-
c++,ある関数のクラスから別の...
-
型Containerのメソッドadd(S...
-
Javaでのジェネリクス型パラメ...
-
キャストについて教えてください
-
C++でfriendクラスにしているの...
-
継承したクラス側のクラス名の取得
-
ひとつのファイルにクラスは1つ?
-
javaのメソッドの戻り値について
-
ClassLoader.getSystemResource...
-
範囲外の数値を代入したらエラ...
-
JAVAのjsonの扱いについて
-
C++ クラス名の前のdefine
-
「タイプ初期化子が例外をスロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
クラス間でのデータ参照
-
構造 他のクラスの構造体を別...
-
C#にて別クラスの関数を使いたい
-
C#のクラスライブラリでメッセ...
-
C# インターフェイスの実装
-
C++でfriendクラスにしているの...
-
継承したクラス側のクラス名の取得
-
Java リフレクションについて
-
ひとつのファイルにクラスは1つ?
-
オブジェクトのデータをもとにX...
-
親クラスから子クラスへアクセス。
-
visual studioのデザイナ画面で...
-
Java
-
import と extends について
-
無名パッケージからのインポート
-
C#でほかのファイルにある自作...
-
C# log4netの使い方
おすすめ情報