1 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:30:18 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part40 pc12.2ch.net/test/read.cgi/tech/1239599317/
528 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:49:45 ] >>527 試した?
529 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:50:14 ] >>528 試してない だって俺C#の文法知らないもん
530 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:03:22 ] はっはっは こやつめ
531 名前:デフォルトの名無しさん [2009/06/15(月) 17:13:00 ] new Dictionary {{"あ","A"},{"い","I"}}
532 名前:デフォルトの名無しさん [2009/06/15(月) 17:15:30 ] <string,string>追加
533 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:22:05 ] うわぁ的なことをした人がいる d.hatena.ne.jp/NyaRuRu/20071211/p3 var dict = Dictionary ( x => "foo", y => "bar", Hauhau => "gaogao" ); C#3.5以降のはず
534 名前:デフォルトの名無しさん [2009/06/15(月) 17:27:09 ] わざわざそんなキモいことしなくても531で正解なんだが
535 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:28:57 ] 一番軽いのはどーれだ
536 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:41:11 ] >>534 実現方法の一つで正解ってわけじゃないけど どうでもいいわ
537 名前:デフォルトの名無しさん [2009/06/15(月) 18:00:02 ] 言語に組み込むのは、手段を統一させるため 昔C#のコンセプトについてそんなコメントがあった気がする
538 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 19:48:35 ] VC#フォームデザイナでメニューを作ったとき、キャプションに 「上書き保存)(&S)」とか入力してからダブルクリックして メニューの Click イベントを書こうとすると private void 上書き保存SToolStripMenuItem_Click(object sender, EventArgs e) ってなるのが気持ち悪くてしょうがないんだけど、 みんなちゃんと飲み込めてるの?
539 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 20:09:18 ] お好きなようにどうぞ ・実害はないので気にしない ・リネームする ・英語キャプションでハンドラを生成して、後から日本語に変更 ・先にハンドラを用意する
540 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 20:35:12 ] >>513 public struct ComplexKey<X, Y> : IEquatable<ComplexKey<X, Y>> を作ってみるのは俺だけか?
541 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 21:28:02 ] is演算子、 as演算子って多用すべきでない?
542 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 21:50:50 ] キャストと比べても、パフォーマンス的には殆ど同じだから安心して使うといい。 キャストに失敗する可能性がある場合には必ずas,isを使うべき InvalidCastExceptionをtry-catchするような方法だと桁違いに遅い。
543 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:32:18 ] if (hoge is Foo) { Foo foo = (Foo)hoge; // ... } 個人的には、上よりは下の方がいいと思うとか、細かいことを挙げたらきりがないけどな。 Foo foo = hoge as Foo; if (foo != null) { // ... }
544 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:49:13 ] >>541 as演算子のほうがキャストより高速になる場合が多いらしい
545 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:55:46 ] まあそりゃチェックが2回になるからね。 でも、そんな差を気にしなければならないのはよほどタイトな処理の時くらいだし、 普通に書いた時変数のスコープが広がるというデメリットもあるから、 別にどっちでもいいレベルだと思うけどね。 なぜかやたらとここにこだわるやつがいて不思議。
546 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:55:48 ] 上は無駄な事をしてる感じなのが気に入らない 下は変数のスコープが気に入らない scalaのswitchが使えればいいんだけどなぁ
547 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:56:34 ] 質問です。 次のような配列があったとして、HighPriceの最大値を求めたいのですが、簡潔に書くにはどう書けばいいのでしょうか? hoge[0].HighPrice = 1000; hoge[1].HighPrice = 780; .(略) hoge[99].HighPrice = 300; 環境はVisual C# 2008です。よろしくお願いします。 自分で考えたのは、 「int maxにまず初期値1000を設定、あとはforループでまわしてmaxをこえていれば新たにそれをmaxに設定する」 というものですが、もっとスッキリさせられないものかと思ってます。 ちなみに、hoge[0].HighPriceは本日(0日前)の高値、hoge[1].HighPriceは1日前の高値・・・ といった設定。100日間の高値の中で最大値を求めたいんです。
548 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:02:07 ] >>547 LINQ使って int max = hoge.Max();
549 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:11:18 ] HighPrice メンバみたいだから int max = hoge.Select((x) => x.HighPrice).Max(); だな
550 名前:549 mailto:sage [2009/06/15(月) 23:15:05 ] あ、Max にはセレクタ指定できるのかごめん int max = hoge.Max((x) => x.HighPrice); かな
551 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:15:35 ] hoge.Max(x => x.HighPrice) みたいな?
552 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:16:33 ] あ、カッコいったか、普段あまり使わないから分からなくなるよ。
553 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:21:10 ] なくてもいいと思うよ。俺は見易さと統一性でいつもつけてる だけ。けど好みの問題だろうな。
554 名前:547 mailto:sage [2009/06/15(月) 23:27:57 ] みなさんレスありがとうございます。 >>550 さんので無事できました。 LINQだとだいぶ楽に書けていいですね。 手元のC#本は古いせいかLINQについては載ってないので新版を買ってくるとします。 ありがとうございました!
555 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:24:51 ] c#で class Test{ } という何もないTestクラスを作って Test test=new Test(); ってやって、 Label1.Text=test.ToString(); ってやったら宣言してないはずのTostring()が実行されるんだけど クラスって宣言しなくても勝手にObject型を継承するようになってんの?
556 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:25:46 ] msdn.microsoft.com/ja-jp/library/system.object.aspx
557 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:42:47 ] >>556 くそ真面目に継承階層にずらずら並べてるのがちょっと微笑ましい
558 名前:デフォルトの名無しさん [2009/06/16(火) 01:49:59 ] >>557 スクリプト切っててわからなかった これはひどい
559 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:50:21 ] 2,768個・・なぜ並べたww
560 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:50:58 ] >>555 クラスどころかC#ではありとあらゆる型がobject継承してる。
561 名前:542 mailto:sage [2009/06/16(火) 08:28:40 ] 安心して使うことにする。 みんなありがとう
562 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 13:07:53 ] >>556 クソワロタ
563 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:27:42 ] なんでわざわざ Program.csとForm.csに分割してるんだ Program.csは Main関数の中に Application.Run(new Form1) みたいな産業あるだけだし・・・ 意味不明
564 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:30:27 ] 意味などないんだよおおおおおおおおおおおお!!! うふっ
565 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:31:25 ] なるべくpublicなクラスは分割した方が管理しやすいから フォームみたいなのだとなおさらね 関係ないけどそれを追求した結果、Javaなんかは1ファイル1publicクラスみたいな潔癖な事になっている
566 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:33:29 ] 意味不明ってまじかよ。冗談はよせ。
567 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 16:47:11 ] foreach(item in arraylist) { if (削除条件(item)) { arraylist.Remove(item); } } てやっても大丈夫? ちゃんとインデックス使って for (int i=arraylist.Count; i>=0; --i) { if (削除条件(arraylist[i])) { arraylist.RemoveAt(i); } } ってやらなきゃだめ?
568 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 16:48:31 ] あ、arraylist の中身は重複しません
569 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 16:53:09 ] foreach中はコレクションを変更できない
570 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 17:08:36 ] RemoveAllで
571 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 18:53:50 ] 1個なら消せるよね
572 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 19:59:54 ] CheckedListBoxって、項目を選んでからチェックボックスをクリックしないと チェックできませんよね。 どの項目を選んでいるか関係なく、クリックしたら即チェックできるようにするにはどうすればいいですか?
573 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:05:32 ] CheckOnClick
574 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:07:00 ] 相談室の次スレ立てれんかったわ
575 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:10:16 ] 立ててやるよ
576 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:11:04 ] >>567 RemoveAll が普通だろうけど、ArrayList ってことは 1.0 縛りとか そういうの?
577 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:13:27 ] 立てたよ
578 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:14:25 ] >>577 GJ
579 名前:デフォルトの名無しさん [2009/06/16(火) 20:35:24 ] Visual C# 2008 Express Edition入れたんですけど、 ライセンス登録しないとどうなるんでしょうか? あんまパスワードとか作りたくないので、 できれば登録したくないです。 あと、どんな感じで勉強してったらいいでしょうか? javaを2年くらいやってます。あとC言語をちょびっとやってました。 くだらない質問と漠然とした質問ですみませんが 教えてもらえたらありがたいです。 お願いします。
580 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:42:13 ] 30日で使えなくなる それだけ Javaやってたなら簡単だと思うよ ここで聞くことも無いかもしれない
581 名前:デフォルトの名無しさん [2009/06/16(火) 20:43:06 ] 一ヶ月経ったら登録しないと起動しなくなる javaできるなら勉強しなくてもいきなり使えるはず 使いながら随時細かい違いを調べていけば十分 それができないならjavaもできてないってことだ
582 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:45:57 ] ...これだと項目を選択した瞬間にチェックがつけられてしまいますが、そうではなくて チェックボックスをクリックした瞬間とはならないでしょうか。 ちょうどチェックボックス付きの ListViewのような動作です。 それならListViewをつかえといわれそうですが、リサイズした場合に一番右側のヘッダの 右端が常にコントロール右端に一致するようにするやり方がわからないのです。
583 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:47:03 ] >>579 登録しなくても問題無くずっと使える 前は登録するとアイコンセットもらえるキャンペーンとかやってたけど リファレンスもユーザーサイトも充実してるしJavaとVB足したような言語だから たぶん難しくないよ
584 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:50:24 ] 堂々と嘘こいてんじゃねええええええええええええええええええええええ
585 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:52:49 ] 嘘を付く時は堂々とするとバレにくいよおおおおお
586 名前:デフォルトの名無しさん [2009/06/16(火) 20:53:16 ] DVDイメージ版は登録いらないんだっけ
587 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:53:40 ] 登録はWebインストール版の話
588 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:54:59 ] www.microsoft.com/japan/msdn/vstudio/2008/product/express/register.aspx Visual Studio 2008 Express Edition を Web インストールにて入手いただいたお客様は、ご使用に当たってライセンス認証が必要となります。 ライセンス認証キー発行の過程において Live ID によるユーザー登録をお願いしております。 無料のライセンス認証キーにより、Visual Studio 2008 Express Edition を、30 日間の期限を過ぎても使用できるようになります。
589 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:57:44 ] あほばっかりや
590 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 21:19:22 ] そもそもパスワードなんてあったか?
591 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 21:22:14 ] 製品登録する用LiveID取得するためにパスワードが必要 LiveID持ってれば製品登録してメール送られてくるだけ
592 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 21:26:19 ] 俺は登録した覚えないからなんのこっちゃと思いながらレス読んでたけど、 Webインストールだけなのね。DVDから入れたわ。
593 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:07:46 ] >>582 ならListViewでSizeChangedでColumnHeaderのWidthいじればいいんじゃね ダブルクリックとかスペースキーでチェック状態変更するときはどうすんのかね
594 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:22:15 ] LiveIDくらいは作っといてもいいと思うぞ。 既に持ってる人も多いだろうし。
595 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:37:01 ] >>582 マウスイベントでマウスポインタの位置を取得して ClickかSelectedIndexChangedあたりで選択されたインデックスの チェックボックスの領域がクリックされたらItemCheckみたいな方法しか ないんじゃないかね
596 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:45:33 ] static classって使い終わってもGCにコレクトされないの?
597 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:49:39 ] >>596 使い終わるってどういう状態のこと?
598 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:51:47 ] c#ってさ、スタドアロン(.Net Framework インストールしてなくても動くって意味で)な exe つくれる? なんていうか、DLL全部EXEに組み込むみたいな。
599 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:01:36 ] MONOはネイティブコンパイルできたと思うよ iPhoneでC#製プログラムを動かすだかって話の時に読んだ
600 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:13:20 ] >>599 aot オプション付けるだけみたい。
601 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:19:14 ] なんだ。じゃあ駄目だな
602 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:23:54 ] 数字を入力してその数字に見合った数だけの文字を表示するためのプログラムを組んでいるのですが 二重ループがうまくいっていないらしく希望の結果になりません、修正点を教えてください 希望のプログラム 5(ここは任意の数字を入力) * ** *** **** ***** このように任意の数字を入力しそれまでの間1づつ増加した*を並べたいです 組んだプログラム #include<stdio.h> int man() { int a,b,c; scanf("%d",&b); a=0; c=0; while(a<b) { while(c<=a) { printf("*") c++; } a++; printf("\n"); } }
603 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:24:44 ] 上記のプログラムで走らせると * * * * * となってしまいます、 * ** *** **** ***** とするにはどこを修正すればいいのでしょうか、よろしくお願いします
604 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:29:20 ] スレタイも読めないのか
605 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:31:51 ] 誤爆しました
606 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:34:27 ] >>604 ただ叩くだけじゃなくてちゃんと誘導してやろうぜ、一応初心者スレなんだから 自分は他人に教えられる、えらい存在だなんて思ってるなら出て行ってくれ >>603 それは違う言語だね、こっちのスレで質問したほうがいいと思います pc12.2ch.net/test/read.cgi/tech/1244942050/
607 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 04:45:27 ] ちなみに、C#としての解決法なら、 その数値にToString()をかけた上でその文字列の長さを見るところだろうな。 C++なら桁数を求める数値計算をさせるだろう。
608 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 07:41:51 ] えっ
609 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 08:11:58 ] >>607 c=0の位置間違えてる限り、何やってもw
610 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 08:13:11 ] 変数を初期化する場所が違うだけ
611 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 08:27:14 ] for(int a=1; a<=5; a++) Console.WriteLine(new String('*', a));
612 名前:474 mailto:sage [2009/06/17(水) 17:30:18 ] >>474 です。遅い原因がわかりました。 昔 ColumnHeaderHeightSizeMode = AutoSize 今 ColumnHeaderHeightSizeMode = DisableResizing プロパティ1つ変えたら10倍速くなりました。
613 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 19:48:37 ] へぇーすごいじゃん。
614 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 19:51:19 ] 特許でガッポガッポ
615 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 22:59:12 ] Tagプロパティって無い方がよくね?
616 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:02:36 ] == と != をオーバーライドしてたんですが、 やっぱりオーバーライドをやめることにしました。 ついては、オーバーライド してた演算子を全部検索して、 Equals に書き換える必要が生じたんですけど、 どこでオーバーライドされた演算子が使われているか検索する 方法はないでしょうか?
617 名前:デフォルトの名無しさん [2009/06/17(水) 23:04:39 ] 消してコンパイルしてみたら
618 名前:デフォルトの名無しさん [2009/06/17(水) 23:07:08 ] 参照型だと消してもコンパイル通るのか 右クリックで「すべての参照の検索」は?
619 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:11:36 ] プログラミング自体5ヶ月の経験の初心者です javaを2ヶ月勉強した後に、仕事で3ヶ月前からC#触っています いろいろな方から聞いたのですが、参照型の値の比較をするときはjavaの時はequalsを使うのは当たり前でしたが、 C#だと==で問題ないって方が多いのですが、これはどういうことなのでしょうか? C#はそもそも参照型の概念がjavaとは違うのですか? ==を使うとき、C#だと値自体の比較がされるということなのでしょうか?
620 名前:616 mailto:sage [2009/06/17(水) 23:15:25 ] >>617 すべての参照の検索だと拾ってくれないんですよ。 困った。
621 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:19:09 ] >>619 == をオーバーロードして値比較にすること「も」できる String とかだな 作法として == をオーバーロードする場合は Equals もオーバーライドして == と同等の動きをするようにする 必ず参照を比較したい場合は Object.ReferenceEquals を使う
622 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:23:06 ] >>619 java知らんけど参照型の比較は言い換えれば参照情報の比較なんだから ==で問題無いかどうかって問題か? 例えばあaとbに1を入れて比較しても参照位置が違えばfalseになるってだけ
623 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:31:50 ] >>616 オーバライドしたままで例外を投げるようにして実行する 例外が出なくなったらオーバライドやめる
624 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:34:59 ] >>619 JavaもC#も==とequals/Equalsの根底は同じ: ==は参照が同じか比較する。equals/Equalsも基本そうだが、オーバーライドして値の等価比較にもできる。 ところが、C#の場合、==演算子を直接、多重定義できる。 特にStringなんかでは型安全ということで、==演算子が推奨されている。 sonic64.com/2006-02-02.html しかし、そういう一部を除いてC#でも基本的にはEquals推奨だよ。 msdn.microsoft.com/ja-jp/library/bsc2ak47.aspx msdn.microsoft.com/ja-jp/library/ms173147.aspx
625 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:35:28 ] >>616 これがドンぴしゃだと思うけどどう? msdn.microsoft.com/ja-jp/library/system.obsoleteattribute.aspx コンパイル時警告になるはず。
626 名前:デフォルトの名無しさん [2009/06/17(水) 23:38:16 ] >>619 Stringのように値を変更できない型に限り、参照型でも==をオーバーロードしてよい
627 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:40:01 ] 演算子がオーバーロードできない言語は糞。
628 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:44:13 ] immutableなオブジェクトは、別々に代入されても、最適化によって 実体は同じになっている可能性が高い。Cの文字列リテラルがそもそも そういう傾向だったし。 s1 = "abc"; s2 = "abc"; と書いたときに、s1 == s2が 真かどうか分からないんじゃ使い物にならないので、内容が同じなら 同一オブジェクトかどうかは問わず真にしよう、という趣旨だと思う。 ただし、単に思いついただけなので、根拠はない。