- PR -

キャストを作ることはできますか?

投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-01-30 11:50
引用:

渋木宏明(ひどり)さんの書き込み (2006-01-28 11:43) より:

Express Edition は機能拡張の類をサポートしてないですから。。。




そうだったんですね。ありがとうございました。
Pro の発売をおとなしく待つことにします。

引用:

Jittaさんの書き込み (2006-01-28 22:14) より:

 んっと、「誰々が、こう言ったから、こうする」ではなく、「誰々が言った、こうするということに、あんな利点があって、それはこういう欠点があっても利用するべきだと思うから、こうする」として欲しいです。



理由は複数あり、その中には、「誰々がこう言ったから」ということも多々含まれます。
以下、公開メンバ変数をプロパティ的な使い方をすべきでないと思った部分を列挙します。

引用:

じゃんぬねっとさんの書き込み (2006-01-26 19:32) より:

さて、そのクラスで "公開されている" インスタンスなメンバである以上は、
やはりプロパティとして "明示化" すべきだと思います。



僕の場合、じゃんぬねっとさんが「こうしている」とか「こう考えている」という時点で、これに従う場合が多々あります。

引用:

じゃんぬねっとさんの書き込み (2006-01-26 19:32) より:

.NET Framework のクラス ライブラリを見てください。
フィールド メンバは、インスタンス メンバではなく、static なメンバである場合が殆どです。
それも readonly なメンバ、constant なメンバばかりじゃないでしょうか?
これらのメンバはインスタンスとしての財産という概念を持ち合わせていないからです。



これも、.NET Framework が「こうしている」から、僕もこれに従おうと思いました。

引用:

じゃんぬねっとさんの書き込み (2006-01-26 19:32) より:

プロパティを実装することで、間に副作用を挟む余地が生まれるというのも利点でしょう。
たとえば、バインディング、コントロールで言えば視覚変化などですね。

それと、プロパティによる実装をすると JIT コンパイルで最適化されることがあるようです。



これも理由の一つですね。
値がセットされた時に、連動してやらなければならない処理を書くことができるのも利点です。
また、一見して冗長に思える処理でも、最適化されるならということも理由になりました。

引用:

Jittaさんの書き込み (2006-01-26 23:08) より:

> 1行に縮められる魔法の言葉だと思っているのですが

 たとえば、「番号」に負の数が入ってくることは、想定していませんよね?でも、誰かが入れるかもしれない。Int32 の範囲を超えるような値をセットしようとするかもしれない。名前にも、常識的な長さの最大値があると思います。それを越えた設定が出来てしまいます。



これも利点ですよね。
値チェックをプロパティのセッターに集約する方法は、なるほどと思いました。

以上、あえて理由をあげるとしたらいくつもありますが、やはり一番の理由は、じゃんぬねっとさんと、Jitta さんが声をそろえて「そうするべきではない」と言ったことに尽きるのではないでしょうか。

引用:

Jittaさんの書き込み (2006-01-28 22:14) より:

> 考えてみれば、「名前」と「String」以外は常に同じです。
 だから、少なくともセッターは、同じであってはいけないの。。。(-_-;



いえいえ、これはあくまで基本的なテンプレートの話なのです。

データバインディングのサンプルをありがとうございました。
僕はてっきりデータベースのテーブルやクエリーでしか利用できないのだと思っていました。
サンプルを参照に、いろいろ試してみることにします。

いろいろ教えていただいてありがとうございました。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-01-30 12:35
こんにちは〜。

引用:

R・田中一郎さんの書き込み (2006-01-27 13:38) より:
考えてみれば、「名前」と「String」以外は常に同じです。
ならば、名前と型を入力すれば、自動的にコードを作ってくれる機能が欲しくなる訳ですが、何か良い方法やツールなどがありそうな気がします。
皆さんはどうされているのでしょうか?


私は、「名前」と「String」の部分をTab区切りテキストにしといて、
正規表現の置換が使えるテキストエディタを使って、以下のように置換してしまいます。

コード:
置換前
(.+)\t(.+)
置換後
Private _\1 As \2\n\nPublic Property \1() As \2\n    Get\n        Return (_\1)\n    End Get\n    Set(ByVal value As \2)\n        _\1 = value\n    End Set\nEnd Property\n


ちなみに、秀丸はグループ化の書式がちょっと違うので注意が必要です。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-01-31 08:55
引用:

ぼのぼのさんの書き込み (2006-01-30 12:35) より:

私は、「名前」と「String」の部分をTab区切りテキストにしといて、
正規表現の置換が使えるテキストエディタを使って、以下のように置換してしまいます。

コード:
置換前
(.+)t(.+)
置換後
Private _1 As 2nnPublic Property 1() As 2n    Getn        Return (_1)n    End Getn    Set(ByVal value As 2)n        _1 = valuen    End SetnEnd Propertyn


ちなみに、秀丸はグループ化の書式がちょっと違うので注意が必要です。



確かに、秀丸などのテキストエディタを使うと楽かもしれませんね。
VSのコードエディアでも、キーアサインの変更ができたり、マクロが組めると嬉しいんですけどね。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-31 09:20
VisualStudio2005 でもマクロって組めますよね
簡単なものしか作ったことは無いですけど

キーボードマクロの登録なら
メニュー→ツール→マクロ→TemporayMacroの記録
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-01-31 19:09
引用:

かるあさんの書き込み (2006-01-31 09:20) より:
VisualStudio2005 でもマクロって組めますよね
簡単なものしか作ったことは無いですけど

キーボードマクロの登録なら
メニュー→ツール→マクロ→TemporayMacroの記録



作れたんですね。ありがとうございました。
ただ、僕のメニューに表示されないのは、きっと Express だからでしょうね。
Pro の発売をおとなしく待つことにします。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-02-01 15:16
引用:

R・田中一郎さんの書き込み (2006-01-31 19:09) より:
ただ、僕のメニューに表示されないのは、きっと Express だからでしょうね。
Pro の発売をおとなしく待つことにします。


待ってる間のつなぎということでw
簡単なツールを作ってみました。
最小限のとこしか実装してないので、好きにカスタマイズしてください。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-02-02 09:10
引用:

ぼのぼのさんの書き込み (2006-02-01 15:16) より:

待ってる間のつなぎということでw
簡単なツールを作ってみました。
最小限のとこしか実装してないので、好きにカスタマイズしてください。



ありがとうございました。
早速使ってみました。mdb に登録して使うんですね。
いろいろ試してみようと思います。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-02-02 10:08
引用:

じゃんぬねっとさんの書き込み (2006-01-27 15:13) より:
 
ただ、Refactor! は VS2005 なんですよね。(C# と VB で違うみたいだし)
そういえば、私は何も気にせずに雛形をコピペしてコード書いてますね。


なんでVB.Netにはリファクタがないんでしょうね
匿名メソッドとリファクタの機能がVBを使っているときに
本当にあったらいいなぁと思います。

スキルアップ/キャリアアップ(JOB@IT)