- - PR -
項目名の文字列とインテリセンスと列挙体
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-02 13:18
「番号」の文字列を一つ書いただけで上記のようなコードを書いてくれる コードジェネレータを書けば良いのでは? _________________ IEEE-CSDP 2004-2007 | ||||||||||||
|
投稿日時: 2006-04-03 10:31
「変数名」そのものを値として使いたい、という事ですね。
確かに、DataRow のカラム名や HashTable のキーに文字列を使うとき、そのように思う事はありますね。他にも、
のように、列挙体の値として「文字列」を使用したいことがあります。(無理ですが)
しかしちょっと待って下さい。変数名と値が全く同じであるという前提があってもいいのでしょうか。私は、先の例では列挙体のフィールド名と実際の値を別の名前として定義しました。 変数名を値そのものとして扱いたい、という状況に若干の違和感を感じるのです。どうでしょうか。 _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2006-04-03 14:16
わかりにくくて申し訳ありません。スレ元のサンプルの DataTable を使って、Add() メソッドを使っている部分で、項目名文字列をキーとして HashTable 的な処理をして おります。
スレ元の2番目のサンプルですが、別途クラスを作って、プロパティで文 字列を返すようにと考えていました。 [ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-04-03 14:16 ] | ||||||||||||
|
投稿日時: 2006-04-03 14:17
そうですね。 そうしようかなー。 | ||||||||||||
|
投稿日時: 2006-04-03 14:31
はい。文字列の入力ミスなどで、とんでもない動きをすることになるので、できる限り 変数に格納したものを使うようにしています。
文字列をキーワードとして捕らえる場合なら、同じで良いという前提で良いように思 います。 使い方は、 grid.CurrentRow.Cells["品番"].Value = "A123"; grid.CurrentRow.Cells["品名"].Value = "こーひーかっぷ"; hashTable.Add("品番", grid.CurrentRow.Cells["品番"].Value); hashTable.Add("品名", grid.CurrentRow.Cells["品名"].Value); は string 品番 = "品番"; string 品名 = "品名"; grid.CurrentRow.Cells[品番].Value = "A123"; grid.CurrentRow.Cells[品名].Value = "こーひーかっぷ"; hashTable.Add(品番, grid.CurrentRow.Cells[品番].Value); hashTable.Add(品名, grid.CurrentRow.Cells[品名].Value); な使い方のイメージです。 | ||||||||||||
|
投稿日時: 2006-04-03 14:42
Hashtable だけで述べれば、キーが文字列限定というわけではないので、
という事で
最初に田中さんが出した案もありですね。 _________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2006-04-03 15:00
ToString() がイヤだという話じゃなかったでしたっけ? (; ̄- ̄)
それはそうと、定数を使おうと定義することで「コンパイル解決」できているわけではないですよね。 つまり「複数箇所で使う場合の考慮」という恩恵でしかないわけです。 この次元で考えるのであれば、2 回書くのは別に良いと思いますけどね。
で、良いのではないでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-04-03 15:10
話は少し変わりますが、上記みたいな事ができるから、メソッドの引数が絡んでくる「場合」は便利ですな。 HogeFunc2() のクライアントは何を指定できるのかが明確。 ToString() 書くのも、2回書くのもそんなに嫌な事ではないと思うのですが。 _________________ 囚人のジレンマな日々 |