- 1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part22 pc11.2ch.net/test/read.cgi/tech/1197802312/
- 477 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:45:25 ]
- >476 swichを使いたがる人に人的な問題が有るだけなので、ネックにならない事がわかればすっきりできます。
>474さんのおかげで解決ですけど、私も興味が有るので、もうちょっと面白い話がを集めたいんですけどスレ違ですかね。 私が今書き出したサンプルはデリゲートの方がスマートっぽいので練り直さないと。 void Hoge<T> where T : IHogeHoge (T value) { ... } を有効利用したサンプルを書けてないと足下をすくわれそうだし。
- 478 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:00:11 ]
- 手段と目的を履き違えていないか?
- 479 名前:477 mailto:sage [2008/01/24(木) 20:07:17 ]
- >478
そうですね。 「参照型→参照型のキャストは無問題 」の理由は解ってないし。 >where T : IHogeHoge (T value) { ... } は自分の件では要らない事が、返事を書いてから気づきました。 未だベンチテストとかできる状態では無いのでボトルネックの洗い出しはできません。 目安としてはポリモーフィックされたupdate()関数は一秒間に180回ぐらい行われて、 satateが切り替わるのは2,3秒に一回あるか無いかです。 それでupdate()関数内に switchが有るのは嫌だなと思う次第です。
- 480 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:42:01 ]
- C# を使うことそれ自体がボトルネックだとおもいまーす
- 481 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:53:24 ]
- switch使ったっていいと思うが
Enumってswitch用じゃね?
- 482 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:11:10 ]
- 問題のサンプルソースできた。
100行ある。ここに貼るとしたらどうしたら良い?
- 483 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:27:57 ]
- (´・ω・`)しらんがな
- 484 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:30:45 ]
- お好きにどうぞ
ttp://zero0.x0.com/mc00/upload.php
- 485 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:37 ]
- ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286835.udn
オリジナルのファイル名でDLすると良いみたい。 かなり汚いけど、これのswitch版を作ってみる。
- 486 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:53 ]
- 一秒間に180回なら全く気にする必要ないだろ
- 487 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:44:26 ]
- stringの連結とかやってる時点で無意味だろ
- 488 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:52:36 ]
- switch有りのソース
ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286840.udn 結果 switch無し 117261 switch有り 114267 switchの方が良かった。\(^o^)/ おまえらさー、 これ信じて本当に大丈夫? >487 良い事言った。
- 489 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:57:23 ]
- テキスト連結を削除して試したら両方15ms以下で終わったよ
- 490 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:03:37 ]
- >489
LinkedListの大きさを20000にして、string xをint xにして只の足し算にした。 switch無し 35928 switch 21836 C#のキャストってやっぱり痛いんだな。
- 491 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:33:24 ]
- インライン展開されてるみたい
[MethodImpl(MethodImplOptions.NoInlining)]をswitch版のupdateに付けてみ
- 492 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:51:29 ]
- つけては見ましたけど、特に変わらなかったです。 21600ぐらい。
--------- using System.Runtime.CompilerServices; --中略--- [MethodImpl(MethodImplOptions.NoInlining)] public void update() { switch (this.state) ----- UMLやDPを使って設計した方が遅くなるってのはC#ユーザーなら通らされる道なんでしょうね。 キャストやガベコレの世界ってこうなっちゃうんだな。 UMLは概念?だかで実装はswitch。
- 493 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:10:11 ]
- 間違えた
インライン展開抑制でこっちで効果があったのはFunc1updateとFunc2updateの方。差がかなり小さくなった。 まあつきつめたらswitchの方が速いのは当たり前だけどそんなことに意味があるかどうかの方が大事
- 494 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:42:57 ]
- そりゃそんな感じの作りならswitchのが効率いいだろうし
3パターンじゃなおさらswitch有利だろうけど だからどうしたってレベルの話だな。 そのレベルでパフォーマンス重視ならC#なんざ使うのが間違い。 まあ大抵はこんなレベルの差はどうでもいい。 普通は処理そのものがもっとずっと重いしな。
- 495 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:53:04 ]
- でどこでキャストとガベコレが関係してるわけ?
- 496 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:56:41 ]
- まったく関係ないw
switchの方が最適化されて有利っていうだけのこと
- 497 名前:464 mailto:sage [2008/01/24(木) 23:57:54 ]
- レスくださった方、ありがとうございます
最適化の意味がないというのがいまいちピンと来ませんでしたが 少し説明不足なところがありました。 関数内の処理をどうこうしたいのではなく、関数に引数を渡す部分に関して 何か速度を上げるのに繋がる手法のようなものがあれば・・・と思ってのことでした なので検討違いかもしれないと今でも思っていますorz 再帰処理がいらないという意見がありましたが、私自身の力量ではこれで全力でして これ自体アドバイス貰いながらの完成だったりします。 どんどんと階層を深く辿るにはどうしてもこれ以外の方法が思いつきませんでした
- 498 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:02:47 ]
- >494
>普通は処理そのものがもっとずっと重いしな。 テキスト連結 117261-114267= 2994 足し算 35928- 21836= 14092 そうですね。 >495 どう関係しているか解らないので、適当です。 C++のポインタとキャストならこうは成らないのでは? switch無しは、何回キャストしているか把握してないし。 ガベコレとauto pointerを勘違いしているかも、 >495が関係ないと言うなら、もっとましなソースになるかもしれませんね。
- 499 名前:498 mailto:sage [2008/01/25(金) 00:05:31 ]
- >496 今見た。
- 500 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:06:08 ]
- >>497
>最適化の意味がない どう見てもディスクIOの方が圧倒的に重いからじゃね
- 501 名前:497 mailto:sage [2008/01/25(金) 00:12:12 ]
- >>500
なるほど、確かにorz 少しでもと思ったんですが厳しそうですね ありがとうございました
- 502 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:17:10 ]
- >>501
IOって面で工夫するとしたら 文字列で渡さずにDirectoryInfoを渡すようにしたらいいのでは
- 503 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:31:02 ]
- インラインとか書かれてるのをみると
脳内で淫乱に変換される漏れの頭を何とかしてください
- 504 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:51:44 ]
- PropertyGridで、uint型の配列を展開したとき、数値を16進数で表示するには
どうしたらいいのでしょうか。
- 505 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:57:25 ]
- 頑張るのならば ArrayConverter を真似して実装してから
uint[] 型のプロパティに TypeConverter 属性で実装したのをつける ArrayConverter の内部クラスが private なので面倒 頑張らないのならば [TypeConverter(tyeof(UInt32HexConverter))] struct UInt32Hex{ public uint Value; } とでもして Uint32HexConverter をお手軽に実装してから UInt32Hex の配列を使う
- 506 名前:504 mailto:sage [2008/01/25(金) 09:13:17 ]
- >>505
ありがとうございます。 とりあえず、頑張らない方向でやってみます…。
- 507 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:57:14 ]
- がんばろうぜ…
いやまあどうでもいいんだけど
- 508 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 10:17:29 ]
- XMLコメントを書くと
メソッド自体とパラメータのコメントはカーソルを合わせたり、Ctrl+K,Pとかすれば表示されますが 戻り値の/// <returns>xxxx</returns>に書いたものは どうすれば表示されるのでしょうか? あとデバッガでメソッドの戻り値が何になったのかを そのメソッド内で見ることは出来ないのでしょうか? バージョンは2008です
- 509 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:33:12 ]
- >>323
VC# 2008 Express使ってて思ったのは、 クイックウォッチが使えないこと。 ブレークポイントからステップインして処理を追っていくときに、 その時点における式の評価ができるのは結構便利なんだよな。 それ以外では全く不満はないので、それだけの為にVS2005Proに戻そうとまでは思わんね。 VS2008Pro、アップグレード版の値段によっては購入を検討する。
- 510 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:52:13 ]
- 前を使ってないからクイックウォッチってのがわからないけど、
文面からイミディエイトウインドウのような気がする。 ?を最初につけてメソッドとか記述すれば結果がみれるし、フィールドに代入も出来る 初期状態では確かメニューにないから、ユーザー設定から追加。
- 511 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:56:44 ]
- 式を評価するだけならウォッチ式でできるよ
2008では演算子の上にマウスカーソルを置くと評価した結果が表示されるようになってる
- 512 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:27:59 ]
- >>510
なるほど、イミディエイトウインドウで自作式を評価できるのか。 今まであんまり使ったこと無かったもんで知らなかった。 それならクイックウォッチいらないかもね。 >>511 それはソースに記述してある式の評価でしょ? それは当然できる。 俺が言ってたのは、ソースに記述してない評価式のこと。
- 513 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:46:42 ]
- >>512
ウォッチウインドウにある空の行をダブルクリックして式を入力するだけ
- 514 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:14:35 ]
- .netだから出来るんだろうけど、
最初にイミディエイトウインドウを知ったときには感動した ドキュメント見て、実際の動作確認をしたくなったら 参照さえしてあれば、そのままF10(ステップオーバー)だけ押せば ソースコードに全くないクラスでもそのまま試せるし、IntelliSense効くし ちょっとしたことなら確認用のプログラム書かなくてもいいんだよな テストしたいクラスがあったときもイミディエイトウインドウから実行できるし ブレイクポイント設定しておけばちゃんと止まるし
- 515 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:36:46 ]
- >>502
DirectoryInfoとFileInfoにして色々試してみました 大きなディレクトリを移動させる際の重さがなくなったのですが、移動スピード(?)というか処理にかかる時間が延びてしまったようです まだ色々試している段階なのですが、これは良くも悪くも安定したということか・・ 何はともあれ新しい可能性です、もう少し試行錯誤していこうと思います ありがとうございました
- 516 名前:デフォルトの名無しさん [2008/01/25(金) 16:32:16 ]
- DataGridView 内のセルにて
長い文字列を入力した時に折り返すようにしたいのですが どのように設定すれば良いのでしょうか? WrapMode を True に設定したら全角文字は上手く折り返されるんですが スペースを含まない半角文字はセルから溢れてしまい、困ってます。
- 517 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:56:07 ]
- 今データベースを使用するアプリケーションを書いているのですが、
SQL文が非常に長くて可読性が悪いので文を分割しようと考えてます。 この場合、 string query = "select hoge, fuga, hage from test" + " where hage = 1 ・・・"; 見たいな書き方しますか?それともStringBuilderを使ってApendしていきますか? どう書くのが一般的なんでしょうか?
- 518 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:28:05 ]
- 多いのは単に+で連結じゃないかね?
俺は@でヒアドキュメントもどきが好きだが。
- 519 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:29:32 ]
- ループ等の中にないならstringで連結してもいいんじゃね
それか余所においとくかリソースにつっこむか
- 520 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:36:50 ]
- リテラルの+はコンパイル時に解決されるからStringBuilderなんて使うと余計に遅くなるよ。
- 521 名前:デフォルトの名無しさん [2008/01/26(土) 00:44:27 ]
- C#のtry-catchの質問です
シリアル通信を用いたセンサのグラフを表示するプログラムを作っています。 UIのデザインForm1.csとセンサを扱うクラスSensorClass1.csにわけています。 で、シリアル通信の関連のエラー処理をしたいのですが、かきのどちらに try-catchを施せばよいでしょうか。 Form1.cs private void buttonWaaSens_Click(object sender, EventArgs e) { this.sensorClass.sens(); } SensorClass1.cs public void sens() { this.serialPort.DiscardInBuffer(); this.serialPort.WriteLine("sens +000001000 20 5 0"); System.Diagnostics.Debug.WriteLine("取得開始"); }
- 522 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:51:25 ]
- >>521
いや、日本語書けよw 君はエスパーかもしれんが、ここ読んでるキミ以外の人間はエスパーじゃないんだけど。
- 523 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:57:03 ]
- ぼくはエスパーです
どちらでも好きなほうにどうぞ
- 524 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 01:08:10 ]
- >>521
ベストアンサー すべて
- 525 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:33:53 ]
- PropertyGridのような折り畳み・展開可能なGrid(複数カラム保持)を作成したいのですが、
参考になるURL・方法を知っている方教えていただけますか? こんな感じを想定しています。 ColA |ColB |ColC -NodeA | | -NodeC| | +NodeB | |
- 526 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:42:09 ]
- >>525
ttp://www.codeproject.com/KB/grid/OutlookGrid.aspx
- 527 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 03:05:21 ]
- >>526
ありがとうございます。 コード参考にして作ります。
- 528 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 05:13:40 ]
- if(dir.Attributes == FileAttributes.ReadOnly)
{ dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; } dirはDirectoryInfoです これで読み取り属性なら読み取り属性を解除するということになっているでしょうか?
- 529 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:39:01 ]
- if ((dir.Attributes & FileAttributes.ReadOnly) != 0)
とでもしておかないと、読み取り専用以外の属性を併せ持つディレクトリを漏らす。
- 530 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 06:45:14 ]
- ディレクトリには必ずディレクトリ属性がついているから、>>528のやり方では絶対に条件が成り立たないな。
- 531 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:22:43 ]
- >>529
ありがとうございます 流石に単純すぎて自分のものはいぶかしんでいたんですが 読み取り専用なだけ、という場合しか考慮されていなかったんですね、助かりました >>530 DirectoryAttributes的なものでもあるんでしょうか? 一応こちらの環境では(読み取り専用にチェック入れただけのディレクトリに対しては)できましたが
- 532 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:25:26 ]
- あれ>>529がいけそうになさそうな・・
- 533 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:35:47 ]
- 状況によって消えたり消えなかったり、読み取り属性だけころっとかわったりorz
もうちょっと試行錯誤してきます、すみません
- 534 名前:508 mailto:sage [2008/01/26(土) 07:50:21 ]
- >>508
やっぱりどちらも無理なんでしょうか?
- 535 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 07:57:37 ]
- >>534
どっちも必要ないから無理じゃない?
- 536 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 09:32:29 ]
- >>534
メソッドの戻り値はreturnの部分にブレークポイント仕掛ければ分かるよ
- 537 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:43:12 ]
- >>518,519,520 さんありがとうございました。
>>518 @使ったヒアドキュメントもどき私も使っています。 >>520 コンパイル時に解決してくれんですね。安心して+で連結できます。
- 538 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:22:07 ]
- form1、form2、form3があり、
form1からボタンのイベントでダイアログ形式でform2を開き、そこに値(TextBox)を入力します そのあと、okでform1に戻り、今度は別のボタンのイベントでform3を開き、そこでSaveFileDialogを開きます このときSaveFileDialogのFileName先ほどのTextBoxの値を入れたいのですがどうしたらよいでしょう?
- 539 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:28:42 ]
- form2にそのテキストボックスの値を取得するプロパティを定義する
form2を表示して,okで戻った後にform1のコードからそのプロパティを通して値を取得して form1のフィールドに入れとく form3を開く前にプロパティとかコンストラクタとかでその値をform3に渡す
- 540 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:29:50 ]
- SaveFileDialogのヘルプ見れば一発でわかりそうなもんだが
一体なにがわからんの? もしかしてform1からform3にファイル名を渡す方法? そんなもん、form3を開く時にファイル名を渡すなりなんなり、自分で考えろ。
- 541 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:32:21 ]
- >>539
すみません 実際のコードで簡単に書いていただけないでしょうか?
- 542 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:40:58 ]
- >>540
お前初心者スレからでてったほうがいいと思うぞ
- 543 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:41:36 ]
- >>541
基礎からやり直せ そのレスで確信したが全くわかってないだろ
- 544 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:43:43 ]
- >>540
具体的に言えばそうです ただそのform3のsavefiledialogのFileNameプロパティに名前を設定するとき、 sfd.Filename = の後にどうやったらform2のテキストボックスの値を参照できるのかがしりたいです
- 545 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:07 ]
- class Form2 {
public string テキストボックスの値 { get { return this.textBox1.Text; } } } class Form3 { private string fileName; public string ファイル名 { get { return fileName; } set { this.fileName = value; } } void SaveFileDialogを開くイベント() { //(略) saveFileDialog.FileName = fileName; } } class Form1 { private string fileName; void Form2を開くイベント() { using (Form2 form2 = new Form2()) { if (form2.ShowDialog() == DialogResult.OK) this.fileName = form2.テキストボックスの値; } } void Form3を開くイベント(){ Form3 form3 = new Form3(); form3.ファイル名 = this.fileName; //form3を表示 }
- 546 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:44:30 ]
- >>544
クラスの基礎だけでいいからどっかの解説ページを読むんだ ここで一時凌ぎすべきじゃない項目だぞ
- 547 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:09:30 ]
- >>545
型 'System.Windows.Forms.TextBox' を型 'string' に暗黙的に変換できません AD_Adjust.textBox1' はアクセスできない保護レベルになっています。 ってエラーが出てしまいました
- 548 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:17:41 ]
- >>547
>>546 やる気あんのか屑
- 549 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:20:15 ]
- >>542
ロクにマニュアルも見ず、自分で試してみることもしないのは 初心者以前。 >>544 だから、 form2のテキストボックスの値を参照できるように、プロパティなり メソッドの引数なりで自分で参照できるように作るんだよ。
- 550 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 14:21:24 ]
- ↑ごめんなさい、解決です
- 551 名前:719 mailto:sage [2008/01/26(土) 14:29:25 ]
- >>719です。
もう一度起動してWINXPを起動したのですが今度は正常に読み込みました。 が・・・ 起動しても何か処理が重い・・・(普段なら10秒もすれば起動して処理が終わるのに・・・) それで色々作業中にまたまた急に電源が切れました。。 そう、719を書き込んだときとまったく同じ症状で で、「これはウィルスだな。」と思い、そうと決まれば駆除しかない! そう思って俺の計算では成功する予定でした。(←馬鹿 しかしその結果、ウィルスチェッカー中に電源が落ちてしまいます。 (ちなみにしばらく時間を置いてから起動すれば立ち上がるみたいなんです。) で3回程度試したんですが・・・必ずチェック数が1万を越える前に電源が落ちます。 ウィルスチェックしていない間は落ちることがないのでまず電源アダプタとかでは無いはずなんですが・・・ ニコニコにウィルスでも混入したのかな・・・?(←先にチェックして来い というわけでちょっとニコニコに何か手がかりみたいなの無いか見てきます。
- 552 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:09:08 ]
- (´・ω・`)知らんがな
- 553 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:48:10 ]
- >>719の頭ん中にもウィスル湧いてんじゃねw
- 554 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:20:38 ]
- Point[] p = new Point[4];
p[0] = new Point(0, 0); p[1] = new Point(1, 1); p[2] = new Point(2, 2); p[3] = new Point(3, 3); クラスの配列をnewするとき↑みたいに 1個ずつnewするのがめんどいんですが スマートにやる方法教えてください
- 555 名前:デフォルトの名無しさん [2008/01/26(土) 19:25:58 ]
- Point[] p = new Point[4];
for(int i = 0; i < 4; i++){ p[i] = new Point(i, i); }
- 556 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:26:31 ]
- Point は構造体だから配列つくっちゃったら
要素ごとに new する必要なんてない なので new は最初の1個だけでよい
- 557 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:28:33 ]
- Point[] p = { new Point(0, 0), new Point(1, 1), new Point(2, 2), new Point(3, 3) };
- 558 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:31:07 ]
- C#でさぁWindowsのAPIを利用するのは.netのコンセプトに反してるよね?
- 559 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:32:24 ]
- それがいやなら .net 側で API 用意してくれ!
- 560 名前:554 mailto:sage [2008/01/26(土) 19:33:30 ]
- >>555 (;´Д`)却下
>>556 (゚д゚)ハァ? >>557 (´∀` )採用!!
- 561 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:34:50 ]
- 構造体の概念を全く理解してないでよくPointクラスを使用できるね。
掛け算の概念を知らないで九九をひたすら暗記している家の息子みたいなもんだ。
- 562 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:36:01 ]
- for を却下して new を羅列してる方を採用って・・・
何がやりたいのか分からない。
- 563 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:37:38 ]
- >>560
Point[] p = Enumerable.Range(0, 4).Select(i => new Point(i, i)).ToArray();
- 564 名前:デフォルトの名無しさん [2008/01/26(土) 19:38:05 ]
- >>561
- 565 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:33:37 ]
- 今までC/C++やってたんですが
最近C#やることになって勉強中です。 ものすごく親切な仕様という印象です。
- 566 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:51:14 ]
- 文字列のn番目の文字だけを別の文字に変えたいときはどうしたら良いでしょうか?
- 567 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:56:55 ]
- 文字列.replace(a,b);
a→b
- 568 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:58:55 ]
- >>554
Point[] p = new Dictionary<int, int> { { 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 } }.Select(xy=>new Point(xy.Key, xy.Value)).ToArray();
- 569 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:15:55 ]
- 一旦ToCharArray()で文字配列にしていじった後にnewし直す。とか
- 570 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:32:19 ]
- >>566
StringBuilderならインデクサ経由で変更できるよ。
- 571 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:33:07 ]
- >>565
親切っていうよりガチガチに制限かけまくってるだけ
- 572 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:51:04 ]
- 画像処理のラスター処理関連の質問です。
画面上に何か図形を2つ書いて(例えば10角形2つ)を書いて その図形の重なった部分の面積を求めるっていうとき どうやればできますか?
- 573 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:54:17 ]
- 三角形9つにずつ分解して、重なり部分81箇所の面積の和をとる。
幾何学の問題。
- 574 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:54:58 ]
- 9じゃねえわ。8x8=64
- 575 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:57:56 ]
- 重なり部分をどう求めるの?
- 576 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:06:03 ]
- >>572
紙と鉛筆で「ry)っていうときの」アルゴリズム書ける人か書けない人かで分岐。 書ける人ならとりあえずアルゴリズム書いて晒してみると親切な人がC#での書き方のヒントくれるかも。 書けない人は……ライブラリ探すところから始める? ちなみに.NET標準にはないよ。 まあ標準ではなくてもGeometryクラスを流用すればできるかもしれんが。 ttp://d.hatena.ne.jp/hogeman/20071202
- 577 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:12:22 ]
- >>572みたいな問題って意外と難しいんじゃないの?
いつでも代数的に解ける図形が与えられるとは限らないし。 だからモンテカルロ法みたいなのがあるわけじゃないの? つーか、>>572は図形がどういうデータ構造で与えられるかをまず提示しなきゃ 話にならないね。
|

|