- 1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part22 pc11.2ch.net/test/read.cgi/tech/1197802312/
- 196 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:23:02 ]
- 994 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/11(金) 12:14:20
Environment.GetEnvironmentVariable( "HOMEPATH" );
- 197 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:27:22 ]
- \r\n と \n の差がわからないんだが
どっちも改行するわけだが動違うの?
- 198 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:31:50 ]
- >>197
サイズが違う。
- 199 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:38:14 ]
- おおまかにはOSによって改行コードが違う。
Unix:\n Windows:\r\n Mac:\r ってか基本だと思うけど。
- 200 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:40:24 ]
- >>199
トンクス Cとかだと\nが改行だから\r\nって何かと思ってたんだが Windowsなら\r\nでいいってことでつね
- 201 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:46:35 ]
- >>200
Cは、テキストモードだと、\nは\r\nに変換される。(winでは)
- 202 名前:デフォルトの名無しさん [2008/01/16(水) 21:52:10 ]
- >>196
ありがとうございました。無事解決です
- 203 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:09:14 ]
- >>200
どうでもいい話ではあるんだが意味的に言うとWinがたぶん正しい なのでhttpとかも\r\n。この辺はCRとLFを調べてみれ
- 204 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:28:13 ]
- むかしタイプライターというものがあってのう
- 205 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:57:06 ]
- LFだけってのはおかしいと思う。
- 206 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:00:21 ]
- それ言ったらCRだけなのもおかしい
- 207 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:16:31 ]
- CRってキャリッジリターンなのは聞いたことあるけど、LFってなんて言うの?
ラインフィニッシュ?
- 208 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:20:38 ]
- ラインフィード
- 209 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:21:27 ]
- CR=キャリッジリターン=キャリッジ(紙を左右に動かす装置)を初期位置に戻すこと。
LF=ラインフィード=紙送り。
- 210 名前:デフォルトの名無しさん [2008/01/17(木) 00:53:22 ]
- C#相談室から誘導されてきました。
たとえば、こういうコードがあったとします。 if (Result == null) { transaction.Rollback(); MessageBox.Show("エラー0です。"); return false; } if ((int)Result == 1) { transaction.Rollback(); MessageBox.Show("エラー1です。"); return false; } if ((int)Result == 2) { transaction.Rollback(); MessageBox.Show("エラー2です。"); return false; } transaction.Commit(); return true; これをスッキリ表記するのに何かいい手段はないですかねぇ…。 throwで例外起こしてtry〜catchってのもスッキリしなくて…
- 211 名前:デフォルトの名無しさん [2008/01/17(木) 01:08:54 ]
- C#でLispみたいなカッコイイプログラミングするにはどうすればいいの?
- 212 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:13:40 ]
- F#をダウンロードします
- 213 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:20:46 ]
- そして卵を御飯にかけます
- 214 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:27:18 ]
- >>210
result = (Result == null) ? 0 : (int)Result; switch(result){ case 0: case 1: case 2: transaction.Rollback(); string temp = "エラー" + result + "です。"; MessageBox.Show(temp); return false; break; default: transaction.Commit(); return true; break; }
- 215 名前:デフォルトの名無しさん [2008/01/17(木) 01:39:34 ]
- xmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?
- 216 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:07:05 ]
- C#のswitchのcaseは絶対に下に降りられないと思ってたが、何も書かなければ並べられるのか。
しかし不必要なbreakを強要されるのが面倒くさいな。 Cの文法に慣れてる人がバグを作らないようにってことなのかな。
- 217 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:10:59 ]
- returnの下のbreakいらんだろ
- 218 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:22:09 ]
- いらん以前に到達できないコードな警告出たりしないかそれ確か
- 219 名前:デフォルトの名無しさん [2008/01/17(木) 13:16:16 ]
- 構造体のマーシャリングについて質問いいっすか?
自分よく分かってないんですが typedef struct tagDESKBANDINFO { DWORD dwMask; POINTL ptMinSize; POINTL ptMaxSize; POINTL ptIntegral; POINTL ptActual; WCHAR wszTitle[256]; DWORD dwModeFlags; COLORREF crBkgnd; } DESKBANDINFO; の WCHAR wszTitle[256];って [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)] にした上で [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)] string wszTitle; じゃないんですか? www.pinvoke.net/default.aspx/Structures/DESKBANDINFO.html とかだと255になってるんですがどっちが正しいんでしょう?
- 220 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:16:55 ]
- 試してみたがbreakいらんな
- 221 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:20:25 ]
- null終端とやらの関係かなとか思ったんですが
msdn2.microsoft.com/ja-jp/library/795sy883(VS.80).aspx 文字列のマーシャリングだと TCHAR szCSDVersion[ 128 ]; ↓ [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )] String versionString; になってるしワケワカリマセン
- 222 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:20:51 ]
- >>219
256であってる
- 223 名前:219 mailto:sage [2008/01/17(木) 13:25:09 ]
- >>222
ありがとうございます。 まじすか。 PInvoke.netのまま使ってると2バイトずつ上にずれてるってことですか?
- 224 名前:219 mailto:sage [2008/01/17(木) 13:30:11 ]
- ありゃMarshal.SizeOfを見たらどっちも同じ
さらにワケワカメ アラインとかPackとかのせいですか? ということは実害なし?
- 225 名前:デフォルトの名無しさん [2008/01/17(木) 18:06:12 ]
- GTKについてわからないところがあるのですが、詳しい方いらっしゃいますか?
- 226 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:08:57 ]
- >>225
C#でGTKといったらMono? Monoスレに行かないといないかもしれない。
- 227 名前:デフォルトの名無しさん [2008/01/17(木) 18:11:31 ]
- そうですか…行ってみます。
すみません、ありがとうございました。
- 228 名前:デフォルトの名無しさん [2008/01/18(金) 01:31:53 ]
- VC#2008関連の書籍って出ないの?
- 229 名前:210 mailto:sage [2008/01/18(金) 02:17:47 ]
- >214
ありがとうございます。 これで試してみます。
- 230 名前:デフォルトの名無しさん [2008/01/18(金) 03:32:28 ]
- C#でxmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?
- 231 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 03:46:58 ]
- visual studio 2005を使ってます。
pictureboxに表示する画像のリソースを指定するときは this***.Image = Properties.Resources.abc; のようにしますが(というかVSが勝手にやってくれますが) これを文字列型の変数を使ってやることはできないでしょうか? string TMP; TMP = "abc"; として5行目と同じように指定したいのです。
- 232 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 06:06:54 ]
- リフレクション使えばできると思うが、やるほどの価値はないと思う。
- 233 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:02:54 ]
- ResourceManager.GetObject使えばできるけど厳密な型指定できないよ
- 234 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:27:36 ]
- 何をしたいのかを書けば、もっといい解決法があるかもよ
- 235 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:13:14 ]
- >>232
>>234 リソース名が連続した英数字なので、for文で数十の文字列の配列を作ったんですが、それをリソース名の指定に使う方法が分からなくて・・・ 手動でやるよりはるかに効率的だと思うので、できればさわりだけでも簡単に教えてもらえればと >>233 では、結局出来ないということになるんでしょうか・・・?
- 236 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:21:16 ]
- Properties.Resources.abc;の実装がどうなってるかみなよ。
- 237 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:18:33 ]
- >>230
XLinqでも使ってみれば
- 238 名前:188 mailto:sage [2008/01/18(金) 11:19:39 ]
- 遅くなりましたが無事解決しました!
ありがとうございました。
- 239 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:01:23 ]
- byte[] b1 = new byte[] {1,2,3,4};
byte[] b2 = new byte[] {1,2,3,4}; があったとして、2つの配列の内容が全て等しいか簡単に調べる方法ってないですか? b1 == b2; も b1.Equals(b2); もfalseになります(´・ω・) やっぱいちいちforeachで回さないとダメですか?
- 240 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:04:53 ]
- うむ
Array.Equals は object.Equals と変わらんからな
- 241 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:06:27 ]
- ぶ、C# 配列 比較 で検索したらすぐ見つかりました。
出来ないみたいですねorz お騒がせしました。
- 242 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:09:45 ]
- 継承クラスで共通のメソッド実行時
親クラスで共通の処理をさせたいのですがどうすればいいでしょうか うまく説明できないんですがポリモーフィズム的なメソッドの共通処理を 継承クラスでは意識せずに親で処理させたいのですが・・・
- 243 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:24:50 ]
- //親
virtual void Hoge() { ... } //子 override void Hoge() { ... base.Hoge(); } じゃあかんのん?
- 244 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:27:51 ]
- >>243
やっぱりそうなりますかね base.Hoge()の処理は必ずして欲しいのに base.Hoge();を付け忘れちゃったりするものですから
- 245 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:21:12 ]
- Hoge は virtual じゃなくして、HogeOverridable を virtual にして
Hoge のなかで HogeOverridable を呼ぶ ただし派生クラスで基底クラスの処理の呼び出す位置を変更できないデメリットもある
- 246 名前:231 mailto:sage [2008/01/18(金) 19:49:57 ]
- >>231ですが
www.atmarkit.co.jp/fdotnet/dotnettips/220resources3/resources3.html を参考に Assembly thisExe = Assembly.GetExecutingAssembly(); ResourceManager TMPres = new ResourceManager( "***.Properties.Resources", thisExe); xxx = (Image)TMPres.GetObject("abc"); とやったらできました。
- 247 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:10:42 ]
- Image img = (Image)Properties.Resources.ResourceManager.GetObject( "hoge" );
- 248 名前:デフォルトの名無しさん [2008/01/18(金) 23:19:52 ]
- VS2008を使っていますが、
FormのFormClosingイベントを捕らえて フォームを閉じることを中止するにはどうすればいいのでしょうか? 以下のように書いてもだめでした。 private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { DialogResult result = MessageBox.Show("変更を保存しますか?", "確認", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Yes) { this.menuSaveProject_Click(sender, e); } else if (result == DialogResult.Cancel) { return; // ←これ } } よろしくお願いいたします。
- 249 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:26:03 ]
- 引数調べれ
- 250 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:28:22 ]
- e.Cansel = true;
とやればいいようですね(´・ω・`) 今までeなんて無視してました ありがとうございました
- 251 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:29:03 ]
- ていうかイベントの解説に書いてるよな
- 252 名前:デフォルトの名無しさん mailto:age [2008/01/19(土) 00:16:31 ]
- IPAddress[] addrs;
があったとして、 この中から特定のIPの項目だけ削除ってどうすればいいんでしょうか。 InteliSenseで見てると addrs.Except(); とかそれっぽいのはあるんですが、いまいち使い方がわかりません・・・
- 253 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:22:22 ]
- 配列は要素の削除とかできないので作り直し
Array.FindAll でもいける
- 254 名前:252 mailto:sage [2008/01/19(土) 01:08:38 ]
- >>253
ありがとうございます。やっぱり作り直ししかないんですね(´・ω・) でもFindAllのおかげでさっくりいきました。 ありがとうございました。
- 255 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:23:46 ]
- List<IPAddress>でいけー
- 256 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:24:22 ]
- >>254
List<>つかおうぜ
- 257 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:32:56 ]
- Listって要素の削除は向いてないんじゃない?
- 258 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:43:53 ]
- ほえ?
- 259 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:45:39 ]
- >>257
- 260 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:47:58 ]
- >>257
( ^ω^)・・・
- 261 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:05:44 ]
-
(^ω^;)⊃ アウアウ!! ⊂ミ⊃ ) / ヽ
- 262 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:47:03 ]
- またRemoveAll()の流れなのか・・・
- 263 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:04:38 ]
- 末尾以外の削除は遅いと思うんだけど、大丈夫なわけ?
- 264 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:08:48 ]
- >>263
実装に因る てか少なくとも配列を使うのよりは高性能に作られているとうれしい(ビクンビクン
- 265 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:10:29 ]
- >>264
実装見ろよ
- 266 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 05:55:24 ]
- 要素の削除と挿入をやるならLinkedListでしょ?
ランダムアクセスできないけど。
- 267 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:37:57 ]
- >>266
> ランダムアクセスできないけど。 それが答えだ。
- 268 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:28:45 ]
- それは削除にむいてないんじゃなくて、
ランダムアクセスにむいてないだけ。
- 269 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:57:04 ]
- ある時点のList<T>の内容を配列か何かに保存しておき、その内容に戻すということをしたいのですが、
インスタンスを変えたくない場合は、Clearして一つずつAddし直すしかないのでしょうか?
- 270 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:58:58 ]
- 要するに、コストの問題だ。
データを参照するより削除と挿入の方が多いならLinkedList だろうし、 頭からforeachしたりインデクスでアクセスする必要があるならList。 目的に応じて使い分ければ済むという当たり前のことだろ。
- 271 名前:269 mailto:sage [2008/01/19(土) 10:02:53 ]
- >>269
AddRangeってのが目に入っていませんでした。 ClearしてAddRangeが正解でしょうか。
- 272 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:14:14 ]
- >>268
ahosugi
- 273 名前:252 mailto:sage [2008/01/19(土) 10:40:42 ]
- これは・・・荒らしちゃったかも(・ω・`)
なんかごめんなさいです。 配列っていろいろ考えとかないといけないんですね。要素もすくないし、参照より削除や挿入が多いと思うんで、LinkList使ってみようかなと思います。ググってみます。ありがとうございました。
- 274 名前:252 mailto:sage [2008/01/19(土) 10:43:27 ]
- LinkedListですね、すいません(汗
- 275 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:51:22 ]
- >>270
そこでB*木とかRB木とかですよ
- 276 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:56:47 ]
- HashSetが合いそうだよなあと確かに話を聞いていて思ったが
要素数少なそうとも思ったのでむしろListでいい気もしたので 言わなかった
- 277 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:14:25 ]
- >>245
すみませんあれからいろいろやってみたのですが class kitei { public void Hoge() { 基底の処理; 派生Hoge呼び出し; } } class hasei : kitei { public virtual void Hoge() { 派生の処理; } } ということ感じになるのでしょうか 基底からの派生hogeのやり方がわからず詰まってしまいました
- 278 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:18:07 ]
- 基底にvirtualなメソッドを一つ増やせ
- 279 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:29:27 ]
- >>278
共通でない処理を切り分けてvirtualメソッドを作って 基底で public void Hoge() { 基底の処理; HogeSub(); } public virtual void HogeSub() { } という風にせよということでしょうか。 メソッド一つで自動的に裏で共通処理できたらいいなーと思ったんですが 使用者が何をするのか明示的に指示するのが正解か
- 280 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:37:21 ]
- >>279
>メソッド一つで自動的に裏で共通処理できたらいいなー 良くないだろ怖いよそんなのw っていうか、チミは普通に継承の意味が分かってないだけとちゃうんかと
- 281 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:44:55 ]
- >>280
確かにそのとおりなんですよね… 派生を多人数が使うときにちゃんと規定どおりに使ってくれない場合があるもんで もう強制自動処理にならんかなーと思った次第です…
- 282 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:57:57 ]
- >>281
テンプレートメソッド的な工夫ではダメなの? つまりテンプレートメソッドから呼び出されるメソッドの方をabstractなりvirtualに すればよくない?
- 283 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:02:35 ]
- >>282
具体的に言うとちょっと極端な例ですが データ入力して保存するという共通処理で 親 public void ClickSaveButton() { 入力チェック() データ保存() ログ出力() } abstract void 入力チェック() abstract void データ保存() abstract void ログ出力() とやるとabstractなんでそれぞれの実装は一応してくれんるんだが セーブボタンを押したときClickSaveButtonを呼び出して欲しいのに データ保存()だけ入れるやつとかいるんですよ
- 284 名前:283 mailto:sage [2008/01/19(土) 16:12:27 ]
- 最初の話とずれてますね…
親 public void ClickSaveButton() { 入力チェック() データ保存() ログ出力() } abstract void 入力チェック() abstract void データ保存() private void ログ出力() //共通処理 いい子 セーブボタン_Click { ClickSaveButton() } だめな子 セーブボタン_Click { データ保存() } セーブボタン_Click { 入力チェック() データ保存() }
- 285 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:15:48 ]
- もはや最初と別の話になってるような気がするんですが。。
- 286 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:20:51 ]
- >>284
まあどうしてもということなら、その例ならSaveButtonClickedイベントを持つ インターフェイスをコンストラクタに取るようにする、みたいな姑息な 対策はできるんじゃない?
- 287 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:28:03 ]
- >>285
自分でもよんでもよくわからない例でした・・・ つまり共通処理とabstractな派生の処理を組み合わせたテンプレートメソッドを 作ったんだがテンプレートメソッドを使わないで処理するやつがいるのです。 だからabstractなメソッド一つで共通も派生処理も出来たらなーと思ったのです て、あーもうだめです日本語でおkです…
- 288 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:19:10 ]
- セーブボタン_Click が ClickSaveButton() を呼び出すと決まっているなら
基底クラスでそう定義しておけばいいんじゃないのか?
- 289 名前:283 mailto:sage [2008/01/19(土) 17:25:35 ]
- >>286
なるほどイベントを使うというのもいいですね >>288 派生では実装無しですか、それだとすっきりですね この方式が一番スマートな気がします
- 290 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:48:35 ]
- 派生クラスでオーバーライドさせるためのメソッドはprotectedにしとくもんだよ
- 291 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:54:35 ]
- 284のセーブボタン_Clickは、みんな親クラスのメソッドなのでは?
- 292 名前:デフォルトの名無しさん [2008/01/19(土) 19:02:51 ]
- class Base{
void method(){・・・} ・・・ } class Derived : Base{ void method(){・・・} void method2(){・・・} ・・・ } で、 Base obj = new Derived(); obj.method(); とできるのはなぜ? これじゃobj.method2()とできないから Derived obj = new Base(); obj.method(); と書くべきじゃないですか?
- 293 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:06:35 ]
- おまえは何を言ってるんだ
- 294 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:06:56 ]
- >>290
そうでしたか…勉強になります >>291 そうななってしまいますね…そしてそれだも問題なしとなる… ボタンクリック以外にも場合によってセーブ処理を走らせる必要がある場合の対応と読み替えてください…
- 295 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:09:27 ]
- >>293
DerivedよりBaseの方が持ってる情報が少ないのに 型になるのはおかしいということです Base obj = new Derived(); と書いたら、Derivedのメンバでアクセスできないものがでてきてしまいませんか?
- 296 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:12:12 ]
- >>292
多態化から勉強し直せ。 Derivedじゃない他のBaseから派生したクラスを同じ流れで取り扱えるようにだよ。 ちなみにvirtualとoverrideしないと、前者のobj.method();が呼ばれるのはBaseのほうだぞ。
|

|