1 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 18:23:31 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part45 (実質46) pc12.2ch.net/test/read.cgi/tech/1255658236/
486 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:23:27 ] >>485 同意 そういや「オブジェクト指向」ていつのまにかただの単語になっちまってるな オブジェクトとして捉え観察してコーディングする指向の呼称だったはずなのにな
487 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:31:20 ] オブジェクト指向言語使ってるのに switchでの処理分けばっかりしてるようなやつもまだ沢山いるけどね。
488 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:32:14 ] プログラミング関連に限らずこの世に「ただの単語」じゃない単語があるならkwsk どんな複雑で難解な数学用語だろうが「ただの単語」だろ?理解できる人が多いか少ないかの違いがあるだけで。
489 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:32:24 ] >>484 んなこたない できるだけ横着するために苦労するのがプログラミングだと思うぞ 車輪の再発明して威張っていいのは学生まで
490 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:35:00 ] >>488 バズワードになったっていいたいんじゃね? ja.wikipedia.org/wiki/%E3%83%90%E3%82%BA%E3%83%AF%E3%83%BC%E3%83%89
491 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:36:20 ] >>487 俺のことか・・・
492 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:37:25 ] 真面目な話、他人の作ったライブラリやコード片やサービスとか上手に組み合わせて 面白い何かをいかに素早く作れるかが重要だよな。ここ最近は。 なに、レビューワーがしっかりしてりゃいいんですよ。
493 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:38:54 ] >>488 いや言いたいのははそういう事じゃない 元の意味を忘れてしまってるって話だ。前レスからの文脈を理解してくれ
494 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:39:25 ] >>491 switch とオブジェクト志向、全然関係ないから気にするな
495 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:41:59 ] switch使うならStateパターン使えよターコ ボケ カス
496 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:45:27 ] >>492 >>489 ここが「初心者向け」と看板がついたスレなのを忘れたか いくつの車輪を再発明できるかがその人の理解の幅や知識、地力を上げると気付けよ 効率の話はまたその先の話だ 基礎的な発想や当たり前レベルだと、慣れた人がパッと見てわかるような事さえ初学では判断もできない訳だから なんでもショートカットしてコピペで済ませてはいけない お前さんも経験あるなら理解してもらえると期待する
497 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:46:04 ] パソコンが普及した ↓ マイクロソフトがVSをただで配ったりBorlandがDelphiをただで配ったりした ↓ 一般大衆も高性能なプログラミング言語を手に入れられるようになった ↓ いままで一部の専門家しかプログラムなんてやらなかったのが普通の小中学生でも手を出すようになった ↓ オブジェクト指向などの概念などをわかりやすく解説するサイトが増えた ↓ 浅い知識だけのオブジェクト指向が広まった こういうことか
498 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:49:40 ] >>496 だから「"学生"まで」なんじゃね? >>484 >>489 >>492 >>496 つか不毛な精神論語って悦に入ってるぐらいならさっさと参考になるサイトでも教えてやれよって思うんだがな。
499 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:50:59 ] switch(currentState)みたいなのは多態使うべきだけど メソッドの引数なんかはよっぽどのことがないかぎり 普通にswitch使った方が適切
500 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:51:03 ] >>495 コードの見通しが悪くなる弊害を無視して 常にそれなら、それはそれでアホだな
501 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:52:56 ] >>499 パターン覚え立てだと凝ったことやりたがるのはよくあること シングルトンの乱用なんかが典型的だな
502 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:55:58 ] >>498 不毛な精神論なんてどこを読んだらそうなるんだよww 考え方やスタンスが無くてどんなコードが書けるんだ 攻略サイトが無いとパズルゲー解けないみたいな主張はゆとりと言うより、ちょっとひどい勘違い
503 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:58:24 ] >>502 自分で考えろだの拾ってくるのが正しいだの、こんなの何の役に立つアドバイスなの? 発言してて気持ちいいだけっしょ?
504 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 14:59:22 ] >>501 逆に初学の間は(どんなにコーディングに慣れた人でも新しい何かを始めた時も含めて、初学の間は) 色々無茶するのはむしろアリだよな 仕事に適用しなきゃならん場合は確実に除いて
505 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:01:00 ] デザパタはあくまでよくあるパターンでしかないからな。 それにGoFで挙がってるのが唯一無二ってわけでもないし。 何でもかんでもアレに当てはめようっての自体がアンチパターン。
506 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:03:13 ] >>503 どうしてそんなスタンスで話を見てるのか、俺にはそれこそお前の気持ちがわからない 俺はどんな話でもそこにヒントを探す。何故ならその方が自分の時間に無駄が無いから てか、気持ちいいだけでしょ?とか、その発想の方が不毛で無駄 コーディングの役にあんまり立たない
507 名前:新人 mailto:sage [2009/11/14(土) 15:03:41 ] クイックソート実装しました! エラー処理とかきっちりやったんで100行ぐらいになりましたよー!いやー苦労しました! 標準ライブラリのとかってなんか遅そうじゃないですか?
508 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:05:05 ] IPアドレスにマッチする正規表現ってこれでいいですか? private static Regex regexIP = new Regex(@"(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])");
509 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:06:07 ] >>506 そりゃお前の話だろ 何故ならその方が自分の時間に無駄が無いから(キリッ 気持ちいいですか?
510 名前:471 mailto:sage [2009/11/14(土) 15:08:01 ] なんかすごい勢いで流れてますが、 >>479 さん、追加例ありがとうございます。 MyClass自体は非ジェネリッククラスにして、 objectに外部で指定された型にParseしたvalueを入れておき、 myclass.getValue<int>(); みたいにとるのも可能性としてはありますね。 結局、 (int)myclass.getValue() と myclass.getValue<int>(); なら前者がシンプルでわかりやすいかなという気がします。 長々とお付き合いいただきありがとうございました。
511 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:08:27 ] >>508 IPアドレス 正規表現でググってでてくるのが軒並それと一緒だから多分大丈夫じゃね?
512 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:09:08 ] >>505 同意。その良くあるパターンを良くある理由も含めて追いかけると、先に進むにつれて楽になる 自分の技や発想のバリエーションがマジで広がる 何がアンチパターンなのかもきっとわかるよな
513 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:10:31 ] >>509 お前多分向いてないよ。もう消えとけ
514 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:10:48 ] >>510 どういたしまして。 つーか、おまえらこんなにいるくせに 黙ってスレ眺めてたのかよ、きめえww
515 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:13:18 ] ある引数の値の範囲を実行時じゃなくコンパイル時に制限することって出来ますでしょうか 値の範囲自体は1-9とかの狭い範囲です。(マージャンゲームの実装をしています) enumを使ったり値自体をクラスにすれば出来そうな気もしますが、そういうやり方が正しいのかどうか よくわかりません。
516 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:13:22 ] >>508 (25[0-5]|2[0-4]\d|[01]?\d\d|\d) こうしないと数字の途中で切れるんじゃ
517 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:14:22 ] 多分3人ぐらいで回してると見たね。
518 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:16:27 ] 俺もそう思う
519 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:17:07 ] そんな感じ
520 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:17:56 ] >>512 ただ、それはアンチパターンだよ、ってのを教えてもらわないと 一生パラダイムシフトしないまま終る人も居る気がするよ。 仕事でやってりゃ怒られたりほされたりして気付くだろうけど シコシコフリーソフトをソース公開しないで発表してたりする場合は 誰にも何にも言われんからなぁ。
521 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:18:43 ] >>517-519 お前らかww
522 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:22:34 ] >>520 あぁ確かに。 指摘してもらえるのって大事だもんな 誰も一人では成長できないって奴だ 自分で広げるスタンスをデフォにした上で、他の人の意見を理解する、みたいな やはり同意
523 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:25:28 ] ボタンを押した瞬間にコンテキストメニューを表示する動作を実装してるんですけど ContextMenuStripを使うとメッセージをブロックしてくれないから?ポップアップすると ボタンがアップしてしまいます これをContextMenuで実装するとボタンが凹んだ状態を維持出来るんですけど 機能がContextMenuStripに比べて少ないのでそれはそれで困ります そこで、ContextMenuStripでShowしたときにメッセージをブロックする良い方法があれば教えてください APIのTrackPopupMenuを試してみましたが表示されませんでした なおボタンをトグル式にしたりして見た目上回避する方法はとれません
524 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:30:31 ] >ボタンをトグル式にしたりして見た目上回避する方法はとれません なぜ? 単にそれだけで解決する「問題」に思えるんだけど。 ちなみに、個人的にはそんなメニューが表示されている間だけ「ボタンがフリーズする」 UIは生理的に気持ちが悪い気がする。
525 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:31:42 ] >>523 は>>463 を頑張ってるんじゃないんだろか
526 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:37:24 ] >>524 エクスプローラの「アイコン/一覧/詳細」の切り替えボタンの動作といったら分かりますかね 凹んだ状態でもう一度押したらポップアップが解除されるだけですけど メッセージがブロックされてないと、一瞬閉じてまた開きます これ以外にも細々とした挙動で多くの不都合がありますので採用できません >>525 別人です
527 名前:デフォルトの名無しさん [2009/11/14(土) 15:41:20 ] 「秀丸エディタ」でC#用のソースを生成しようとしたのですが、 「秀丸エディタ」の正規表現の置換がうまくいきません。 作業内容は、 (1)Excelで作成した表を、タブ区切りのテキストデータとして保存し、 (2)「秀丸エディタ」でそのテキストデータを開き、 ^(先頭文字)⇒¥t¥t¥t に全置換しようとしました。 もともとテキストデータであったファイルを置換するときはうまくいきますが、 Excelからエクスポートしたテキストデータは、先頭行を認識してくれないのでしょうか。 どうすれば、先頭行を置換できるでしょうか。 スレちがいかもしれませんが…よろしくお願いします。
528 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:48:12 ] 趣味でプログラミングやってる人に仕事でやってるようなノウハウを押し付ける人たちってきめぇわ 死ねよ
529 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:48:19 ] >>527 マルチポストです
530 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:50:11 ] >>527 スレ違い帰れ
531 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:50:48 ] class このスレ{ public int バカ; public string アホ; public static void 無駄レス(); }
532 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:53:08 ] >>528 な。連中がしてることってオナニーだよな。
533 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 15:53:37 ] >>526 なるほどお節介をいって申し訳ない。 ちなみに、今ちょっと実験してみたらButtonのOnMouseUpをオーバライドして ベースクラスのOnMouseUpを呼ばないようにすると「押されたまま」の状態になるようだ。 ボタンを通常の状態に戻したいときには、OnMouseUpが呼ばれた時のMouseEventArgsを 保存しておいてベースクラスのOnMouseUpを呼べばいいみたい。 これがWindowsプログラミング的に正しいかどうかは分からないけど。
534 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:03:22 ] >>533 ありがとうございます 確かにその方法でボタンの押しっぱなしには対応できますね ただボタンを左クリックして解除された時の動作や、 ポップアップしているメニューと関係のないコントロールの キーボードショートカットなどが効いてしまいます これらの多くの問題に対処するには、どうしても ContextMenuのようなメッセージをブロックする形で ポップアップしないとキリがない感じです・・・ なので、なんとか辻褄を合わせるような対処法は避けたいのです
535 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:04:44 ] 麻雀牌のクラスを作る場合、 abstract class 牌 {} abstract class 数牌 : 牌 {} abstract class 萬子牌 : 数牌 {} class 一萬 : 萬子牌 {} ... abstract class 字牌 : 牌 {} abstract class 三元牌 : 字牌 {} class 中 : 三元牌 {} ... ってやって全部クラスにしちゃうのと abstract class 牌 {} enum 数牌タイプ { 萬子,. 筒子,... }; class 数牌 { 数牌タイプ Type, int Number} enum 字牌タイプ { 東, 南,.... }; class 字牌 { 字牌タイプ Type, } みたいに途中でenumで振り分けちゃうのはどっちが実装として正しいんでしょうか?
536 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:24:12 ] いろんな言語を勉強すると 今まで使ってた言語の良い部分と悪い部分が浮き出てきて良いなぁ
537 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:32:50 ] >>536 スレ違い
538 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:34:38 ] decimalってなんで最後にmつけるの? decimalなんだからdでいいだろ!doubleと間違うならdeでいいだろ! なんだよmって!
539 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:38:33 ] プロが作ってるソフトつっても公開してるフリーソフトみてもらえればわかるけどレベル低いよ プロのうんちくは読んだ本の受け流し 趣味グラマでも萎縮する必要はないよ
540 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:39:48 ] >>538 moneyのmだろksg
541 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:40:26 ] >>535 まず、牌の種類ごとにクラス分けする必要があるかどうか疑問だなぁ。 牌を使って何をするかにもよるが。
542 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:40:26 ] >>539 具体例プリーズ
543 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:48:05 ] >>541 回答が貰えた!ありがとうございます。 最初は牌クラス一つにしようと思ったんですが、 数牌は種類と数字が必要なのに字牌は種類だけ必要 => 字牌の場合数字が死にプロパティになる?ってのと、 ドラの牌を調べるのにこの牌の次の牌(九萬の次は一萬、南の次は西とか)はそれぞれの種類毎に あったほうがいいかなぁと思って、それならどんどん派生させた方がいいのかなぁって思えてきまして・・・ 実際に処理する場合は 牌インスタンス is 萬子 で判定するか、 牌インスタンス.Type == 数牌タイプ.萬子 で判定するかの違いぐらいかなぁって漠然と考えています。
544 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 16:58:30 ] 二次元配列で 0-1 東 0-2 南 0-3 西 0-4 北 1-1 白 1-2 葵 1-3 中 2-1 2-2 ... 2-9 萬 3-1 3-2 ... 3-9 筒 4-1 4-2 ... 4-3 索
545 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:07:41 ] >>544 ??インデックスを牌クラスに持たせるということでしょうか??
546 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:42:41 ] 条件分岐は逐次処理になってしまうんでしょうか? 全スレッドに対して一様に条件分岐を行うと処理が遅くなったので…
547 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 17:51:26 ] 条件判断に使ってるインスタンスがロックされてて 逐次処理になってるんじゃね?
548 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:12:15 ] ふふふ・・・面白い漫才スレw。 はじめから完璧なものを作れた人なんていないしプロは過去の遺産を使いまわしているから 穴が少ない傾向にあるだけでしょ。どんな使われ方をしても大丈夫なプログラムなんて そうそう作れるものではない。それは色々なOSが証明している。 と、初心者なおらは思う。
549 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:13:42 ] >>548 ん?何に対する話だ?完璧なプログラムの話なんか誰かしてたっけ?
550 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:25:59 ] 完璧なものを作る・・・?どんな使われ方をしても大丈夫なプログラム・・・? printf("Hello World!!\n"); 残りmain部分だけしか書いてないならどんな使い方をしてもバグは起こらないだろうな
551 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:41:02 ] しかし、ランタイムが入っていなかった!
552 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 18:49:50 ] >>551 どこまでをプログラムとするかでそこらへん変るから。
553 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 19:11:47 ] ランタイムがバグっていた!
554 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 19:44:58 ] >>543 >>541 の言う通りなにをするかによるんだけど。 自分だったら牌クラスをひとつ用意した上で、enum で牌の種類を全部定義して、それをプロパティで 設定/参照できるように作る。テキストベースなプログラムを作るなら、牌をユーザに示すための文字を 設定/参照するプロパティを、GUI? なプログラムなら、牌のイメージを格納したビットマップかなにかの以下略。 ‥‥と脱線気味な雰囲気に抵抗してみた。w
555 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 20:00:26 ] >>554 役を判定するときにクラスに別れてたほうが判定しやすいかなーと思ったけど よく考えてみると緑一色判定とかしたくなったら牌を特定するしかないわけだから 渡された牌があるグループに属してるか判定する静的メソッドでも作った方が シンプルになりそうですね。 牌はenumで全定義、グループ判定は静的メソッドの方向でがんばってみようと思います。ありがとうございました。
556 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 20:09:05 ] >>555 静的メソッドより、Is萬プロパティとかの方がC#っぽい ような気がする。
557 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 20:48:39 ] >>556 牌のインスタンスにIs萬とかIs数牌とか付けるってことですよね。 そこらへんどう解決するのがスマートなのかなんですよね、結局。 Is萬とかにする場合・・・ ◯{get; private set;} なプロパティにしてコンストラクタ内で設定 --> コンストラクタでenum牌タイプを見てswitchして判断する? → コンストラクタがごつくなる・・・ ◯コンストラクタに引数で渡す --> Is萬がtrue, Is字牌がtrue、typeが一索なんてのをはじけない って書いてて思ったけど、HashSet<牌タイプ> 萬子Set, 索子Set..... とか作って それで判断すればそんなにごつくならないかな・・・
558 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:02:27 ] VBとVC#ならどちらがプログラム初心者にとっては組みやすいですか?
559 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:03:58 ] 試しに書いてみれば? 書くと何がスマートじゃないか何となくわかるからそれで書き直せばOK
560 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:05:30 ] >>558 c#
561 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:12:23 ] >>560 どうしてでしょう? VBは入門言語だと聞きますが、VC#も似たようなものでしょうか? また、趣味で本格的なプログラムをするとなればどちらが有利ですか?
562 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:14:42 ] どちらも難易度は変わらない 趣味なら断然C#。VBを選ぶ積極的な理由はない。使ってる人はみんな仕方なく使ってるだけ。
563 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:18:44 ] 昔はVBとVC++が比較されてて、 VC++はポトペタ(フォームに貼り付けてイベント直接書いて終わりの書き方)が今一な上、 C++の概念もMFCも難しかった。よってVBの方が楽っていわれてた。 その流れでVBの方が楽っていまだに言う人がいるんじゃないのかなぁ。 VBもVC#も.NETを使いこなすのが一番のポイントになってるから 文法が違うぐらいでやるこた一緒だよ。 んで文法の自由度はC#の方が強力。
564 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:25:40 ] 趣味なら情報は主にwebに頼ることになるだろうけど,それについてはC#の方がずっと充実してるんだよね オープンソースプロジェクトもほとんどC# C系言語に慣れてればjavaやC++の情報も理解しやすい
565 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:31:25 ] C#のdoubleって計算の途中でどうみても誤差が発生してる場合微妙に調整されてるの? math.PIとかmath.Eとかつかった計算をdoubleでやってみてToStringすると条件によってきっちりした整数が表示されることがあるんだが・・・ こっちとしては10.000000000001とか表示されるより10と表示されるほうが楽でいいんだけどさ。
566 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:31:41 ] C#は.NET用に一から設計されているから、負の遺産が無いのもメリット
567 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:38:39 ] 超初心者はMainをmainって書いちゃったりusingをUsingって書いちゃったり;がありませんとか double型とint型は互換性がありませんとかコンパイラにおこられまくるからいやになるかもねw
568 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:40:11 ] >>565 ToStringの段階で下の方切り捨ててるだけ 実際の演算とは無関係
569 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:52:22 ] >>565 double x = 10, y = 10.0000000000001, z = 10.00000000000001; Console.WriteLine("{0}, {1}, {2}", x.ToString(), y.ToString(), z.ToString()); Console.WriteLine(x == y); Console.WriteLine(y == z);
570 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:03:54 ] キーボードショートカットの実装で、どういうキーが押されたかの判定は どういうふうにやるのが一般的なんでしょうか。 ぐぐるとifやswitchをつかった例がいくつか見つかりますが、数が多くなったり、 Shiftなどの装飾キーの有無も含めた判定をするとかなりごちゃごちゃしそうなのですが・・・
571 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:05:57 ] メニューやコントロール自身に関連づけるのが一般的じゃない?
572 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:18:47 ] string word が日本語かどうか判別できる関数または方法はありますか?
573 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:23:39 ] >>570 ちょっとかいた、多分動く protected override bool ProcessCmdKey(ref Message msg, System.Windows.Forms.Keys keyData) { //Debug.WriteLine("ProcessCmdKey Start:"); const int WM_KEYDOWN = 0x100; const int WM_SYSKEYDOWN = 0x104; if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN)) { switch (keyData) { case Keys.F1: return true; case Keys.F2: return true; case Keys.F3: return true; case Keys.F4: return true; case Keys.F5: return true; case Keys.F6: return true; } } return base.ProcessCmdKey(ref msg, keyData); } 各キーとリターンの間に実行したい処理をいれればいい。他のキーの組み合わせはぐぐれ
574 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:42:14 ] アセンブリのことがよくわからないのですが、 VC#の場合1プロジェクト1アセンブリという認識でだいたい合っていますでしょうか?
575 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:45:45 ] VC#の場合1プロジェクト1モジュール1アセンブリ
576 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:46:35 ] うん。
577 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:00:10 ] マルチモジュールアセンブリってどういうときに使うの
578 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:06:00 ] >>577 msdn.microsoft.com/ja-jp/library/168k2ah5.aspx
579 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:08:42 ] >>557 自分なら、そう言う判定は牌クラスにはやらさない。 麻雀はやらないから良くはわからないけど、手牌を管理するクラスの基底クラスか、 役を判定するクラスを作って、そこで判定させる。 麻雀を知らないから良くわかんないんだけど、牌のグループを判定する目的ってなに? そんなのなくても判定できそうに思うんだけど。。。
580 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:11:23 ] どうせアルゴリズム主体だからどうでもいい
581 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:20:02 ] >>579 牌の情報は牌が知ってる方が妥当な設計かなーと思ってそういう設計にしてました。 実際そういった情報を使うのは役判定クラスだけになりそうなんですよね。 グループの判定がしたいと思った理由は、以下のような役で ある牌がどのグループに属してるか判った方が実装が楽かなと思ったからでした。 ・清一色(全部の牌が萬子、筒子、索子のうちの一種類) ・字一色(全部字牌) ・混一色(清一色に字牌の面子あり)
582 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:28:25 ] Win32APIのCreateProcessを使っているのですが C++だと終了前にCloseHandleをするように決められています これはリソースの解放をいうことだと思うのですが ガベッジコレクション?があるからC#では特に解放したりする必要はないのでしょうか?
583 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:32:34 ] >>582 自分で解放しなきゃダメ。 GCに回収/開放されるのはC#の管轄内で生成されたオブジェクトだけ 具体的にはそのインスタンスの為に処理系が用意したメモリ領域だけ
584 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:33:18 ] 当たり前に必要。というかなんで Process クラスを使わん .NET でまじめに Handle を使うのなら SafeHandle を使う 必要もあるし、P/Invoke は素人にお勧めできない。
585 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:41:38 ] >>581 なるほど。知識不足、すまん。 それなら、牌種類 enum の他にグループ enum を牌クラスのプロパティに持たせるかな。 やっぱり牌クラスにはその手の判定メソッドは持たせない。自分なら。
586 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:49:41 ] private void GetTextBlocks(UIElement p) { if (p is TextBlock) { list.Add((TextBlock)p); }else if (p is Panel) { var pa = (Panel)p; foreach (UIElement c in ((Panel)p).Children) { GetTextBlocks(c); } }else if (p is ContentControl) { GetTextBlocks((ContentControl)p); } } 再帰的に TextBlock の一覧を取得するメソッドですが、 これを Linq とか ラムダ式とか使ってメソッドを定義せずに 短く書くことってできますか?