1 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:44:27 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part23 pc11.2ch.net/test/read.cgi/tech/1200033660/
710 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:09:57 ] >>706 MSのガイドラインによると,ネストした型を外に見せるのは推奨されない 外に書いていい
711 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:24:01 ] >>710 そんなガイドラインあったっけ? っていうか.NETのライブラリだって普通にネストした型を公開してるよね。 たとえばListViewItemCollectionなんてそのはずだけど
712 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:47:31 ] >>711 msdn2.microsoft.com/ja-jp/library/ms229027 (VS.80).aspx コレクション系は例外に当たるみたい(List<T>+Enumeratorとか)
713 名前:712 mailto:sage [2008/02/17(日) 13:00:34 ] 親とデザイン的に強く結び付いてるときは(親のprivateメンバにアクセスするとか) 稀に入れ子の型にすることもあるってことかな 単に親でしか使われないからというだけではなく
714 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:07:51 ] というより当該のガイドラインそのものが合理的根拠がない「俺様ルール」か、 それが言いすぎならせいぜい「村の掟」に過ぎないってことじゃないの?
715 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:19:19 ] それを言うなら名前付けの規則とか 名前空間をあんまり深くしすぎるなとかだって同じだろ 単にMSの好みだから従わなくていいと言ってしまえばそれまで
716 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:43:17 ] 変なプログラムの例ならCプログラミング診断室を読むといいよ
717 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:06:20 ] Cプログラミング診断室で昔何度か探し回ったものの書籍紹介しかなくて泣いたのはいい思い出 ちょっと下にスクロールするだけだったと思わなかったのは俺だけかなぁ
718 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:15:49 ] 君だけだろwwwww
719 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:18:56 ] 俺だけか…てかあそこ読む意味をあんま理解してない辺りまだまだですね、すみません
720 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:42:17 ] >>717 え?ちょw今知ったwww本借りてきたのにwwwww
721 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:21:58 ] 定数文字列を格納する一番(?)スマートな手段というのはどんなものなのでしょうか? 現状 struct hoge{ const string piyo = "abcde"; const string fuga = "abcde"; const string hogehoge = "abcde"; const string piyopiyo = "abcde"; const string fugafuga = "abcde"; : } といった具合にだーっと書いています、文字列定数の数は50個程度、文字列長は10~300文字程度です 調べれば定数と言えばconstと出てくるのでこれで通していたのですが もっと良い手段があるのではないかと思い質問しました。 それではよろしくお願いします
722 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:24:30 ] >>721 リソースとして埋め込むかテキストファイルにでも書いておいたらいいんでない?
723 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:47:36 ] >>721 .NET Frameworkの中では SR.GetString("キー文字列") みたいにしてるよ そういう風にしとくと後で実装変えられて便利
724 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:01:01 ] Icon ico = Properties.Resources.IconFile1; 以上の部分で、以下のようなエラーが出ます エラー CS0103: 名前 'Properties' は現在のコンテキスト内に存在しません。 以前までは正常に動いていたためどこかを変えてしまったせいかとも考えたのですが エラー文から見るにPropertiesが無いといっているように思えます しかし、ソリューションエクスプローラから見るとProperties/Resources/IconFile1はしっかり存在します こういった場合はどういう間違い・おかしな部分が考えられるのでしょうか?
725 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:24:31 ] >>724 開発しているのにまずエラーコードやエラーメッセージでググらずに2chに書き込んでる部分かな
726 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:30:00 ] >>725 なにを根拠に言っているか笑えてきますが既に検索済みです。
727 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:30:34 ] ああゆう断定形はネタだよ、ガチで言っちゃってるやつはすぐふぁびょるから見もの
728 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:22:34 ] バルーンを手動で表示させると、最初だけふきだしの先っぽが違う方向に出るのは何故なんだぜ? ツールチップに関するコードは↓のみなんだけど、回避する方法は無いものか… toolTip1.Active = false; if( textBox1.Text.Length > 5 ){ toolTip1.Active = true; toolTip1.Show( "hoge", textBox1 ) }
729 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 10:30:35 ] ツンデレ
730 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 12:15:37 ] ArrayListで2つのコレクションがあるんだけど、どちらもPointerなのね この2つのコレクションに含まれてる要素で、重複するものだけを取り出したいんだけど、どうやればいいんでしょ? たとえば、 1つめのコレクションhoge1には、{P1, P2, P3, P6, P7, P8 } 2つめのhoge2には{P2, P7} とあるとき、P2とP7だけ取り出したいんです foreach( Point p in hoge2) { if( hoge1.Contain(p)) { point.add(p) } } とやったら、if分のところで、比較ができないというエラーが出マスタ 今回、ジェネリックは使わないので、ArrayListでお願いしますm(__)m
731 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 12:58:58 ] 日本語でおkっていうか。 Pointer って何? そういうクラスってことでいいの? だとしたらポインタとごっちゃになるろくでもない名前だけど。 比較ができないってエラーメッセージはググった限り .NET のエラーメッセージには存在しないようだけど?
732 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:49:25 ] >>731 スマソ Point型と間違えたわ 2つのコレクションは、どちらもPoint型変数が入ってるのよ
733 名前:730 mailto:sage [2008/02/18(月) 14:10:04 ] もっと調べたら、ObjectとPointが比較できないとか、明示的なキャストが必要です、とか出てきマスタ。
734 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:03:21 ] .NET Framework 2.0かそれ以下かでArrayList.Containsの挙動が違うらしいが。 1.xならContains使わずにループでunboxingして比較するしかないんじゃない?
735 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:30:49 ] ArrayList はジェネリックじゃないから、Contain() の引数は Object 型でないとダメだぞ。 Add() する時にもちゃんと Point から Object にキャストしてるんでしょ?
736 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:24:08 ] どうもありがとう >>734 ソースコードはC#1.0のときに書かれたものですが、.今はNET2.0で使ってます >>735 Add()するときはObjectにして加えてます。 なるほどそうか。 Contein()の引数を、Point型のままにしてますた。 Object型にキャストしてから引数に使えばいいんだ・・・。 やってみます。 どうもありがとうございます。 しかし、受け継いだソースがC#1.0向けに書かれたソースなので、 ArrayListを全部ジェネリックに書き換えるのが手間だと思っていたけど、 結局書き換えた方が後々楽な気がしてきた・・・orz
737 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:07:39 ] >>736 アップキャストしてどうすんだよ ポリモルフィズムを理解してないんじゃねーの?
738 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:21:04 ] >>735
739 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:52:22 ] ぽまいら、変数とかの命名でプレフィックスとかつけてまつか?
740 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:59:30 ] 必死になっていい単語思いつかないときに時々使う
741 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:59:33 ] どっちでもいいけどクラス外から見えるメンバにプレフィックス付けたら死刑
742 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:03:04 ] クラス外から見えるメンバって静的メンバ定数のことか? それ以外にまさかないよね?
743 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:08:24 ] アクセス制御とstaticかどうかは関係ないだろ publicフィールドはゆるさーんて言いたいだけ?
744 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:13:52 ] public フィールドなんてキチガイしか書かんだろ。 構造体ならともかく。
745 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:16:27 ] メンバって言ってるんだからC#の世界ならパブリックメソッドとプロパティとイベントでしょ。 個人的にはいまだに型名にプリフィクスつけるよ。 少数派なのは認識してるが、やっぱり構造体、クラス、列挙体がぱっと見ただけで 区別つく方が好都合な場面が多い。 特にクラスのつもりで構造体扱っちゃうような「致命的な凡ミス」を防げる蓋然性があがるし。
746 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:18:40 ] オレはC#の場合はプロトタイプや使い捨てのプログラムでは書く 命名規則はプロパティと同様にしておいて、 class Hoge{ public int Foo; } 必要になったら class Hoge{ private int foo; public int Foo{ get{return foo;} set{foo=value;} } } あまりオススメはしない
747 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:38:37 ] プレフィックスつけるってそもそも設計ミスじゃない? つーかVBer以外で使う人いるの? 結構人見てきたけどVBerだけだったよ。
748 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:42:24 ] まあ関連するプロジェクトが全て自分の管理下にあるならリネームなんて一発だしな。 リフレクションで型名とかメソッド名が文字列に埋め込まれてると痛いが。
749 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:50:45 ] >>736 私は、キャストが手間という理由でジェネリック使いまくり。 違う型のリストが複数あるとき、インテリセンスで要素の型が判別できるのが特に嬉しい。 >>737 ArrayList はポリもーフィズムとアップ・ダウンキャストを前提に使うものなのでは。 初心者用スレだし、一応ツッコミ。
750 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:52:14 ] メソッドやプロパティのほとんどを日本語にしているから プレフィックスがないと入力が不便。
751 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:21:15 ] プレフィックスが教えてくれるのは変数の型だけだぜ!! って誰かが言ってたな。
752 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:29:43 ] 前に見た糞プロジェクトで、フィールドに普通に名前つけて プロパティ名が全部p_なんちゃらとかなってて思わずワロタよ
753 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:30:03 ] .NET Frameworkのクラスライブラリのソースコードのメンバ変数はプリフィックスだらけ
754 名前:デフォルトの名無しさん [2008/02/18(月) 23:55:21 ] >>753 privateなフィールドなら好きにすればいいが、public メンバにやったら殺す
755 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:04:58 ] >>751 元々のハンガリアンは変数の型をプレフィックスにするんじゃないぜ!! って、Joelが言っている。 local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B
756 名前:デフォルトの名無しさん [2008/02/19(火) 00:16:12 ] >>744 publicなフィールドってやっぱだめ? set getでフィールド渡すだけだと、いちいちプロパティの宣言するのが面倒くさくて ついついやっちまうんだけど。
757 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:19:24 ] C#3.0の自動プロパティで駆逐されると信じたい public int MyProperty { get; set } これだけ
758 名前:デフォルトの名無しさん [2008/02/19(火) 00:20:31 ] 重い処理を行うプログラムがあり、BackgroundWorkerを使ってるんですが、 画面への出力にはDoWorkからフォーム操作を行おうとすると「あるスレッドで作成された コントロールに対して、別のスレッドのコントロールを親にすることはできません。」と出ます。 それは分かるんですが、フォームへの描画自体に時間がかかる場合、その処理自体を バックグラウンドで行うにはどうやれば良いのでしょうか。
759 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:21:22 ] バッファに書き込んどけ
760 名前:758 [2008/02/19(火) 00:43:11 ] 説明が抜けてましたが、実際は子ウィンドウから処理を実行し、親ウィンドウに 複数のウィンドウ(タブ)を追加するといった処理をしたいです。(タブを追加する処理が重い) バッファに書き込む方法はSetStyle()だと思うんですが、どうも親ウィンドウのフォームでは SetStyle()が指定できないようでした。。
761 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:55:36 ] Bitmapに描いとくってことだろ
762 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:38:40 ] プレフィックスつけてるひと、けっこういるのね 型名とかコントール名とか、どうやって省略したらいいか困るときがある int int_x=0; string str_name = "taro"; textbox tbx_input = new textbox(); みたいな感じで頭に三文字略称をつけろとかいう つまんないローカルルールが社内で流行ってて しかも人によって略称が違うときがあって逆に混乱するという ちゃんと取り決めしてないのにプレフィックスつけろって… プレフィックス一覧とかあると助かるんだけど、いいのが ない
763 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:54:45 ] ないと思うけどlong int_x = 0;
764 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:55:16 ] var int_x = 0;
765 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:55:18 ] コントロールはわからないでもないけど その他の型名を付けることに関しては全く無意味だと思う
766 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:23:59 ] VS2005でSocket通信を行っているのですが、LANケーブルを抜かれた等の経路切断の検出方法に困っています。 調べたところ、TCP KeepAliveを使えば出来そうな気配なのですが、C#用の資料が全然見つかりません。 資料もしくはサンプルのポインタを教えてください。 私が調べたかぎりでは ttp://vsug.jp/tabid/63/forumid/45/threadid/8051/scope/posts/Default.aspx がかなり近いケースで、ほぼ要求事項は同じです。(違いは私はクライアント側になります) たしかにこのSetSocketOptionを設定しても、検出はできませんでした。 // KeepAliveの設定 _tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000); レス3番目の方法はどこにどう実装していいものやらわからず、またどうやって検出するのかもわからない状況です。 必要あればサンプルも貼ります。
767 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:32:52 ] >>766 TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば 直ぐ確認できるはず
768 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:45:01 ] >>757 それをプロパティにするとなんかメリットあるの? いつもpublicフィールドにしちゃうけど
769 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 08:23:15 ] >>762 型名っていうかクラスと構造体とenum(とそれぞれのインスタンス)を 区別するためだけ、なんだけどね 要はクラスならcを頭につけるとかそういうやつ
770 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:37:26 ] 描画をバックグラウンドって、 描画からみの処理自体を細切れにしてやるしかないな。
771 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:41:50 ] >>768 あとで実装変えられる
772 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:51:58 ] >>771 あーやっぱめんどくさいからpublicフィールドで十分かな(´・ω・`)
773 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:53:02 ] propコードスニペット使えよ
774 名前:デフォルトの名無しさん [2008/02/19(火) 11:14:22 ] プロパティーを使っておくと、リフレクションを使ったライブラリやコードを組むときに便利だよ C#3.0から導入される匿名型は自動的にプロパティーとして実装される事もあるし、とりあえず以下の例を見てもらえれば解る。 Button と DataGridView コントロールをフォームに置く。 以下のコードを実行する、C#は日本語でもコードできるのでそのままいけます、DataGridViewのタイトルに注目、プロパティーの名前がそのまま出る。 class 行の定義 { public int 行番号 { get; set; } public string 内容 { get; set; } } ボタンのイベントに対して 行の定義[] データテーブル = new 行の定義[] { new 行の定義() { 行番号 = 1 , 内容 = "ABC" } , new 行の定義() { 行番号 = 2 , 内容 = "DEF" } , new 行の定義() { 行番号 = 3 , 内容 = "GHI" } , }; dataGridView1.DataSource = データテーブル;
775 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:16:41 ] >>774 それぐらいだともはやこれでいい気がするけどな。 dataGridView1.DataSource = new [] { new { 行番号 = 1 , 内容 = "ABC" } , new { 行番号 = 2 , 内容 = "DEF" } , new { 行番号 = 3 , 内容 = "GHI" } , };
776 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:25:40 ] 2008は、発売されてまだ日が経っていないので、まだ知らない人いるかなと思ってそう書いたんですが・・・ とふと気付くとプロパティーを省略形にしていたorz C#3.0では、get; set; と書くと、自動的に中身が作られます。
777 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:39:29 ] ああ駄目だ、配列の初期化までC#3.0になっているorz もう戻れないな……
778 名前:766 mailto:sage [2008/02/19(火) 11:54:56 ] >>767 御返事ありがとうございます。 > TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば > 直ぐ確認できるはず 自分でそこまでできるスキルがありませんorz サンプルがあれば頑張って追いかけてみるんですが素で書くのは無理そうです。。。 サーバ側が自分でいじれればアプリ側でチェックかけるのですが、サーバ側は担当外なので変更不可です。。。
779 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:48:55 ] となるとネットワークインタフェイスと会話する必要がありそうだね こっちは門外漢なのでヒントだけおいておきますね support.microsoft.com/kb/239924/ja
780 名前:766 mailto:sage [2008/02/19(火) 13:38:53 ] >>779 ヒントありがとうございます。レジストリいじるですか。。。ちょっと気が引けますけど試してみます。
781 名前:デフォルトの名無しさん [2008/02/19(火) 15:11:44 ] >>776 おおお、そうなのか! 2008のpropスニペットで{get;set;}としか入らないから なんじゃこりゃ…と思っていたところ。
782 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:25:50 ] VS2005(C#2.0)です。 インスタンスを文字列で生成するには Activator.CreateInstance(Type.GetType("クラス名")); で生成するのは判ったんですが、"クラス名"が存在しているかどうか(生成可能かどうか)を 事前に判断するにはどうしたらいいでしょうか? データを読んでいって、専用の派生クラスがあればそれで、 無ければ汎用の基底クラスで生成しようと思ってるんです。 ご教示よろしくお願いします。
783 名前:782 mailto:sage [2008/02/19(火) 15:37:05 ] あ、GetTypeしたときにnullかどうか、 もしくはCreateInstanceして例外をキャッチすればいいのか。
784 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:44:07 ] >>746 よくPGの人は、HogeとかHogehogeとかFooとかって書いてるけど、なんでへんてこりんな単語を使うの? ホゲ、ホゲホゲ、ホゲ、フーーー!とかってカタカナで書くと、ぬこが喧嘩してるのかと思う
785 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:48:04 ] >>760 最初からタブを用意しておいてHideにしておき、必要が出たらVisibleにするのはどうなの?
786 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 16:27:27 ] すいません質問です。 列挙型の変数でToString使用しようとすると、『使用しないでください』、といったポップアップの説明が出ます。 代替としてSystem.Enum.Parseを使えと言ってますが、 現在の値の文字列を取得したいので、GetNameのような気がしますがどうでしょうか?
787 名前:デフォルトの名無しさん mailto:age [2008/02/19(火) 17:07:01 ] すいません、質問です。 複数条件を確認する場合のif文の書き方について教えてください。 こんな感じで書きたいのですが、C#の場合はエラーとなってしまいます。 C#ではどのように書いたらよいのでしょうか。 if((a=="")or(b="")){ }else{ } いくつか検索をしてみたのですが、かっこのなかの条件が一つの場合の 例しかヒットしませんでしたのでここで質問をしてみました。 どうぞよろしくお願いします。
788 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:08:31 ] >>787 ||
789 名前:デフォルトの名無しさん mailto:age [2008/02/19(火) 17:12:09 ] >>788 ありがとうございました。
790 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:46:22 ] >>784 ja.wikipedia.org/wiki/Hoge
791 名前:デフォルトの名無しさん [2008/02/19(火) 18:27:11 ] 2008ってVistaから搭載されてるガジェット作れるようになった?
792 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:48:46 ] >>784 メタ変数ってやつだよ
793 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:23:06 ] >>790 日産フーガって・・・メタ構文変数だったのか
794 名前:デフォルトの名無しさん [2008/02/19(火) 21:27:36 ] 質問です。DBにA列とB列があり A B ---------- 1 日本 1 東京 1 大阪 2 アメリカ 2 ニューヨーク 3 中国 3 北京 のような形で格納されています。 これをGridに表示させる際に 1 日本 東京 大阪 2 アメリカ ニューヨーク 3 中国 北京 といった形で出力したいのですが、どのようにコードを組んだらいいのか 悩んでおります。 何か良い方法などありますでしょうか?
795 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:32:27 ] while(Aカラムが存在するまで): Aカラムに該当するレコードを配列に格納 while(配列が存在するまで): 配列からBカラムを抽出 end end
796 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:36:28 ] >>794 こんな感じ? var table = new[]{ new { A = 1, B = "日本" }, new { A = 1, B = "東京" }, new { A = 1, B = "大阪" }, new { A = 2, B = "アメリカ" }, new { A = 2, B = "ニューヨーク" }, new { A = 3, B = "中国" }, new { A = 3, B = "北京" } }; var q = from x in table group x.B by x.A; foreach (var x in q) { Console.Write(x.Key); foreach (var y in x) Console.Write("\t{0}", y); Console.Write("\n"); }
797 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:43:16 ] データの持ち方を間違ってる。 テーブル構造を見直すか、アプリ側で処理する。
798 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:56:55 ] テーブル構造を指摘する人って・・・
799 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:05:52 ] RDBの場合レコードの並びは保証されてないから国名をどうやって判定するのよ 前ブランクのあるなしかい?
800 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:11:11 ] 国コード 国名 地域名 1 日本 東京 普通こんな感じにしないか
801 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:12:44 ] まあ、それ言い出したら >>800 のテーブルも正規化されてないでしょ。 そこはスルーでいいんじゃないかと。
802 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:23:58 ] >>800 気持ちはわかるが、国コードと国名が冗長な気がする
803 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:40:35 ] つか日本なら普通、国コードは81だろ
804 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:43:17 ] +81
805 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:38:27 ] 42にすれば全て解決
806 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:40:24 ] むしろカラム一枚で 81<>jp<>tokyo みたいにすれば最強。 で、レコード一枚でケツに繋げていくの。
807 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 09:59:09 ] .NET Frameworkのバージョンが異なるアセンブリ間で StringやImage等のオブジェクトをやりとりするのは問題ないのでしょうか?
808 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:43:16 ] 意味ワカンネ
809 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:45:03 ] 具体的にどういう状態?
810 名前:807 mailto:sage [2008/02/20(水) 15:05:03 ] // .NET Framework2.0で作ったアプリ System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(他の人が.NET Framework3.5で作ったDLL); Hoge hoge = (Hoge)asm.CreateInstance(DLLが公開しているクラス名); string str = hoge.Name; Image img = hoge.GetImage(); と、違うバージョンで作られたStringやImageを使っても大丈夫なのかなと。