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.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を使ったやり方で対応します。
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; }
}
}
}
クラス内にクラスを作り、インデクサで記述すればご希望の書式で記述する
ことができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
c++,ある関数のクラスから別の...
-
Javaコンストラクタthisとsuper...
-
JTableのイベント取得方法
-
範囲外の数値を代入したらエラ...
-
内部クラスのインスタンスを外...
-
dllエクスポート時のdeclspec(d...
-
内部クラスのスコープについて。
-
アップキャスト、ダウンキャス...
-
無名パッケージからのインポート
-
プログラムの変数名にするとど...
-
dynamic_castの必要性
-
二つの変数の値を入れ替えるメ...
-
import と extends について
-
private変数を設定(Java)
-
eclipse3.0 元に戻す最大回数...
-
Tomcatのpropertiesファイルの...
-
VisualC++でクラスのヘッダーフ...
-
エクセルVBAで、条件に一致する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
クラス間でのデータ参照
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
C#にて別クラスの関数を使いたい
-
C#でほかのファイルにある自作...
-
C++でfriendクラスにしているの...
-
java-別クラスの変数の使い方を...
-
親クラスから子クラスへアクセス。
-
構造 他のクラスの構造体を別...
-
ひとつのファイルにクラスは1つ?
-
Java
-
import と extends について
-
継承したクラス側のクラス名の取得
-
SwingでgetContentPaneのエラー...
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
-
アップキャスト、ダウンキャス...
-
C# インターフェイスの実装
-
visual studioのデザイナ画面で...
おすすめ情報