ふらっとC#,C♯,C#(初心者用) Part54
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/01/23(土) 17:44:07「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part53
http://pc12.2ch.net/test/read.cgi/tech/1263093575/
関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
0232デフォルトの名無しさん
2010/01/26(火) 11:33:55そんなこと言うなよ、俺が変わりに暴露してやるから
CXXXXってcl.exeのエラーだよなw
0233デフォルトの名無しさん
2010/01/26(火) 15:32:56初心者スレに初心者が来なくてどうする
0234デフォルトの名無しさん
2010/01/26(火) 21:13:53outは初期化した参照でなくても渡すことが出来るという点でrefより融通が利くわけですが、
それでもなぜrefが存在しているのでしょうか?
outはダメでrefでなければならないというケースはどんなときですか?
0235デフォルトの名無しさん
2010/01/26(火) 21:16:190236デフォルトの名無しさん
2010/01/26(火) 21:19:52未初期化のローカル変数にアクセスできないのと同じ
0237デフォルトの名無しさん
2010/01/26(火) 21:42:020238デフォルトの名無しさん
2010/01/26(火) 21:45:550239デフォルトの名無しさん
2010/01/26(火) 22:26:37int a = 10;
と初期化済みの変数aをメソッドにout付きで渡したらどうなりますか?
0240デフォルトの名無しさん
2010/01/26(火) 22:29:19だから値を読もうとすると問答無用でコンパイルエラー
0241デフォルトの名無しさん
2010/01/26(火) 22:29:47なんでそんな、試せばすぐに分かることを人に聞くんだ。
自分でやってみて考えなさい。
0242デフォルトの名無しさん
2010/01/26(火) 22:31:530243デフォルトの名無しさん
2010/01/26(火) 22:39:18「なにこれ作ったやつバカじゃないの?」ってのはもう最悪に素質ないから趣味でも辞めろ。
仕様やライブラリを信用できなかったらなにもできない支那。
0244デフォルトの名無しさん
2010/01/26(火) 22:42:140245デフォルトの名無しさん
2010/01/26(火) 22:47:51ああお前のことね
0246デフォルトの名無しさん
2010/01/26(火) 22:50:17「バカじゃないの?俺ならこーする、こっちの方がこうこうこういう理由で合理的じゃん!」
ってやって皆に認められる言語やライブラリやフレームワーク作る人も居るとは思うけどね。
とはいうけど言ってることは基本的に同意で。
0247デフォルトの名無しさん
2010/01/26(火) 23:04:25参照渡しもポインタも使わずにどうプログラムを組めと
0248デフォルトの名無しさん
2010/01/26(火) 23:07:19理屈の上ではrefやoutも完全に代替できる
0249デフォルトの名無しさん
2010/01/26(火) 23:09:45初心者は極論持ち出さない方がいいよ
頭固くなるから
0250デフォルトの名無しさん
2010/01/26(火) 23:11:26それポインタじゃね?
0251デフォルトの名無しさん
2010/01/26(火) 23:13:38違うよ笑
0252デフォルトの名無しさん
2010/01/26(火) 23:21:370253デフォルトの名無しさん
2010/01/26(火) 23:21:46で、具体的にどんなコードだよ?
0254デフォルトの名無しさん
2010/01/26(火) 23:22:59配列には次の様に”数字.dat”という規則のファイル名が格納されており、
003.dat
01.dat
006.dat
0005.dat
これをソートして
01.dat
003.dat
0005.dat
006.dat
のように昇順で並び替えたいと思っています。
リテラルのソートをしてくれるクラス・メソッドはありますか?
もしそのようなクラス・メソッドが無い場合はどうすればよろしいでしょうか?
0255デフォルトの名無しさん
2010/01/26(火) 23:25:340256デフォルトの名無しさん
2010/01/26(火) 23:25:37メソッドとプロパティとdelegateとイベントハンドラでほとんどなんでもできる。
0257デフォルトの名無しさん
2010/01/26(火) 23:26:550258デフォルトの名無しさん
2010/01/26(火) 23:28:18Sort((a,b) => int.Parse(a.Replace(".dat","") - int.Parse(b.Replace(".dat","")));
0259デフォルトの名無しさん
2010/01/26(火) 23:29:220260デフォルトの名無しさん
2010/01/26(火) 23:32:48>まあ基本refやoutなんか使わないほうがいい
この発言の根拠がなにかってことじゃないのか?
0261デフォルトの名無しさん
2010/01/26(火) 23:34:300262デフォルトの名無しさん
2010/01/26(火) 23:35:030263デフォルトの名無しさん
2010/01/26(火) 23:37:37>>258
ありがとうございます。
その方法を調べてみます。
0264デフォルトの名無しさん
2010/01/26(火) 23:38:12置き換えるんならそのまま使った方がマシだろ。
0265デフォルトの名無しさん
2010/01/26(火) 23:40:17クラスライブラリでrefやoutを公開するのは非推奨
C#ならいいんだけどVBやC++/CLIから使う場合には区別がつかないから可読性の問題もある
0266デフォルトの名無しさん
2010/01/26(火) 23:41:100267デフォルトの名無しさん
2010/01/27(水) 00:04:240268デフォルトの名無しさん
2010/01/27(水) 00:08:110269デフォルトの名無しさん
2010/01/27(水) 00:08:370270デフォルトの名無しさん
2010/01/27(水) 00:14:27TryParse も out 使わずに実装しやがれ!
0271デフォルトの名無しさん
2010/01/27(水) 00:15:45ガイドラインがある
0272デフォルトの名無しさん
2010/01/27(水) 00:16:220273デフォルトの名無しさん
2010/01/27(水) 00:18:09例外は使いたくないな
だって、ジョエルが使うなって言ってるもん(;。;)
0274デフォルトの名無しさん
2010/01/27(水) 00:19:050275デフォルトの名無しさん
2010/01/27(水) 00:20:16お前オッサン臭がするぞ
オッサンだろ
0276デフォルトの名無しさん
2010/01/27(水) 00:22:44うまく書く方法はあるんか?
0277デフォルトの名無しさん
2010/01/27(水) 00:26:060278デフォルトの名無しさん
2010/01/27(水) 00:36:210279デフォルトの名無しさん
2010/01/27(水) 00:40:45true/falseの返り値チェックし忘れそうだし。
こんなメソッド提供する必要ない。
0280デフォルトの名無しさん
2010/01/27(水) 00:40:47間違ったコードは間違って見えるようにするって奴か
しかしながら俺は”他人が俺の拵えた関数のエラー値を正しくチェックしている”なんて信用していないんだ。
だから例外処理を強制する
0281デフォルトの名無しさん
2010/01/27(水) 01:13:320282デフォルトの名無しさん
2010/01/27(水) 01:35:16多値戻り値サポートしてれば out 要らないんだけどね。
あと、C# の場合は過去のしがらみ(COM 相互運用とか)で out が必要。
0283デフォルトの名無しさん
2010/01/27(水) 01:51:10なんでC#はサポートしなかったんだろう?
0284デフォルトの名無しさん
2010/01/27(水) 02:00:520285デフォルトの名無しさん
2010/01/27(水) 02:09:29関係性を定義するのは集合と写像が基本であり、
写像の典型例が関数だから。
0286デフォルトの名無しさん
2010/01/27(水) 02:16:37「エラーの際は○○を返却します」を読まないといけないから嫌じゃ。
マクロが使えるHRESULTとかだったらまだいいけどな、
ハンドルでNULLと0xFFFFFFFFが共存してるのはマジ死ねとしか言えない。
0287デフォルトの名無しさん
2010/01/27(水) 02:21:36死ね
0288デフォルトの名無しさん
2010/01/27(水) 02:55:210289デフォルトの名無しさん
2010/01/27(水) 03:01:35そんな旧式の動作をするようなクラスが.NETの基本クラスライブラリにどれだけあるか、例にあげてご覧よ。
0290デフォルトの名無しさん
2010/01/27(水) 03:08:270291デフォルトの名無しさん
2010/01/27(水) 03:59:57比較ごとに毎回replace*2、parse*2するのはコスト的に馬鹿らしくないか?
因みに、PenM 1.7GHzでreplaceとparseだけを2^21回実行したら1.5〜2秒くらいだった
(2^21回=要素数1024の最悪ケース=要素数65536の平均ケース)
0292デフォルトの名無しさん
2010/01/27(水) 04:04:52頻繁にやるようならキャッシュするけど
数回なら拘るのは馬鹿らしいのでしない
0293デフォルトの名無しさん
2010/01/27(水) 04:40:39最適化は質問者の仕事だろ
実際の流れが分からないと答えでないし
そもそもそこまでしてやる必要ない
0294デフォルトの名無しさん
2010/01/27(水) 05:59:38文法が似てるきがするのでC#もやってみたいんですが
いわゆるmainにすべての処理を書くようなプログラミングで(サブルーチン程度なら関数も使っていますが)
オブジェクト指向?構造体?コンストラクタ?みたいな状態なんですが(知らずに使っているかもしれませんが)
上記のようなことを知りたい場合におすすめな定番ページはありますか?
演算子、配列、構文などは分かってると自分では思います
0295デフォルトの名無しさん
2010/01/27(水) 06:01:170296デフォルトの名無しさん
2010/01/27(水) 07:37:17例えばhttp://www.microsoft.com/japan/msdn/vstudio/2008/product/express/install_vcs.aspxにある時計を表示するプログラムを書いて
これを実行するプログラムを作成するにはどうすればいいんでしょうか
ソリューションのビルドってやってもビルド正常終了ってなるだけで何もおきません
exeファイルは作れないのですか?
0297デフォルトの名無しさん
2010/01/27(水) 07:42:37自分でエクスプローラーでプロジェクトの場所開くなりして
DebugやReleaseフォルダ探せばEXEファイルが入ってるだろう
0298デフォルトの名無しさん
2010/01/27(水) 08:01:02オブジェクト指向頭になるとintだろうがなんだろうが基本的にはクラスで
抱える考えになるのでrefとかoutで悩むことはないはずなんだが
>>267
>>262のAPI使うときにないとこまる
用途はそれくらいだろ
0299デフォルトの名無しさん
2010/01/27(水) 08:03:43ビルドは作ってるだけだよ
その隣のデバックのところで動かせるし
exeそのものを取り出したいならプロジェクトのパスをたどって
binフォルダ->Releaseフォルダ->xx.exeと探すしかない
0300デフォルトの名無しさん
2010/01/27(水) 08:09:58きっと手をつけてないんだろうな。
でもま、そんなあなたに JScript.NET ! こっそり入ってます。
0301296
2010/01/27(水) 08:13:450302デフォルトの名無しさん
2010/01/27(水) 09:01:34自動的にデバッグビルドに切り替えるか、警告を出してくれるようなオプションはありませんか?
0303デフォルトの名無しさん
2010/01/27(水) 09:02:070304デフォルトの名無しさん
2010/01/27(水) 09:17:30object[]返してるようなもの?
0305デフォルトの名無しさん
2010/01/27(水) 09:23:07デリゲートとかいうやつなんでしょうか?
0306デフォルトの名無しさん
2010/01/27(水) 10:08:22C系の文法で書くなら、
Ret1, Ret2 Method(Arg1 x1, Arg2 x2)
ラムダ的に書くなら、
(x, y) => (x + y, x * y)
みたいなの。
C# 的にいうと、
void Method(Arg1 x1, Arg2 x2, out Ret1 r1, out Ret2 r2)
を
var r1, r2 = Method(x1, x2);
って書き方で呼べてもいいじゃないっていう。
0307デフォルトの名無しさん
2010/01/27(水) 10:09:07おおむねその通り。
関数ポインターよりはデリゲートの方が高機能だけど。
インスタンスメソッドも渡せたり、マルチキャストできたり。
0308デフォルトの名無しさん
2010/01/27(水) 10:18:51http://www.infoq.com/jp/news/2010/01/Mono-CSharp-Ex
複数戻り値も入っとるな、こっちはout引数がついた関数を特別な呼び方ができるやつ
じゃなくてタプルをアンパック代入できる方式だが
0309デフォルトの名無しさん
2010/01/27(水) 10:20:14値渡しは値渡し
ポインタの値渡しはあるが、参照の値渡しなんて概念がある言語ってあったか?
0310デフォルトの名無しさん
2010/01/27(水) 10:31:590311デフォルトの名無しさん
2010/01/27(水) 10:32:310312デフォルトの名無しさん
2010/01/27(水) 10:33:16じゃあ(ref object x)はなんと表現するんだ
0313デフォルトの名無しさん
2010/01/27(水) 10:37:031) 参照の(指している何か自体の)値渡し
2) 参照の(指している場所情報の)値渡し
だから何?
0314デフォルトの名無しさん
2010/01/27(水) 10:38:42http://img.f.hatena.ne.jp/images/fotolife/t/taka_2/20090528/20090528234725.jpg
0315デフォルトの名無しさん
2010/01/27(水) 10:50:09JavaとかC#の参照型って結局ポインターみたいなもんだからねぇ。
ポインターの値渡しに相当。
0316デフォルトの名無しさん
2010/01/27(水) 10:55:45「参照の値渡し」というのはVBの用語と考えた方がいいと思うが。
0317デフォルトの名無しさん
2010/01/27(水) 11:04:590318デフォルトの名無しさん
2010/01/27(水) 11:11:11c#だとクローンが参照の値渡しみたいなもんじゃね?
0319デフォルトの名無しさん
2010/01/27(水) 11:56:14参照の参照渡し
値型の値渡し
値型の参照渡し
0320デフォルトの名無しさん
2010/01/27(水) 11:59:58if (method(xxx)) { xxxxxx; } って書けないのはありがたみがないな
0321デフォルトの名無しさん
2010/01/27(水) 12:08:41成否判定だけ特別に扱える構文でも作ればよくね?
→ 例外が出来ました
ってのが元々なんだけど、C#では例外で処理フローつくるのはやめてねってことになってるんだよね。
だから検査例外が存在しない。(catchしなくてもコンパイル通る=処理しないといけないエラーは例外にすんな)
0322デフォルトの名無しさん
2010/01/27(水) 12:40:40ありがとうございます。
0323デフォルトの名無しさん
2010/01/27(水) 13:44:17うむ
0324デフォルトの名無しさん
2010/01/27(水) 14:10:07Formにダブルバッファ設定があったので試しましたがやはりちらつきます。
ゲーム関連のようにvsyncを待ってとかできれば一番いいのですが
0325デフォルトの名無しさん
2010/01/27(水) 14:12:140326デフォルトの名無しさん
2010/01/27(水) 14:16:18まあそんな感じですよね
ウインドウのシステム上完璧にってのは無理なんですかね・・・
あとvistaとか7は問題ないのかもしれないですけど古い2DドローシステムのXPはどうしても
0327デフォルトの名無しさん
2010/01/27(水) 14:50:59フォームのダブルバッファはあくまでもフォームに対する設定だからなぁ
そのコントロールを派生し、コンストラクタにおいて
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
this.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
をやってみるといい。
0328デフォルトの名無しさん
2010/01/27(水) 14:51:430329デフォルトの名無しさん
2010/01/27(水) 15:00:22おお、まったくちらつかないw
Direct2DでやれることはほぼできるしAAかけたりできるのにちらつきがあることで
あきらめてたのがあったんですがこれでできそうです
0330デフォルトの名無しさん
2010/01/27(水) 15:23:11感謝を忘れるんじゃねえw
■ このスレッドは過去ログ倉庫に格納されています