ふらっとC#,C♯,C#(初心者用) Part57
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/03/20(土) 02:15:38「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
ふらっとC#,C♯,C#(初心者用) Part56
http://pc12.2ch.net/test/read.cgi/tech/1267348401/
関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/1
VB.NET質問スレ(Part33)
http://pc12.2ch.net/test/read.cgi/tech/1263738929/1
C++/CLI part3
http://pc12.2ch.net/test/read.cgi/tech/1206447234/1
0153デフォルトの名無しさん
2010/03/21(日) 13:27:50なるほど
しかし、すげぇな・・・
4.0いろいろ贅沢な機能付きすぎだろ
0154デフォルトの名無しさん
2010/03/21(日) 13:29:06自己紹介乙
0155デフォルトの名無しさん
2010/03/21(日) 13:32:131〜10までを足すだけ。
int sum = 0;
Parallel.For(1, 10+1, option, () => 0,
(i, parallelLoopState, s) => s + i,
s => Interlocked.Add(ref sum, s) );
Console.WriteLine("sum = {0}", sum);
0156デフォルトの名無しさん
2010/03/21(日) 13:34:33Parallel.Forなんて大して使えん
ループ内がそれそれ独立していなければ無理
0157デフォルトの名無しさん
2010/03/21(日) 13:37:160158デフォルトの名無しさん
2010/03/21(日) 13:37:34でも・・・実装したからには何か目的が・・・・メリットがあるんだよな?
0159デフォルトの名無しさん
2010/03/21(日) 13:38:35自分でスレッド作って調整するのは大変だぞ?
0160デフォルトの名無しさん
2010/03/21(日) 13:39:160161デフォルトの名無しさん
2010/03/21(日) 13:42:370162デフォルトの名無しさん
2010/03/21(日) 13:50:06そんな並列の意味が一切無い例出してどうすんのさ
0163デフォルトの名無しさん
2010/03/21(日) 13:52:50お前に言われる筋合いはないから
0164デフォルトの名無しさん
2010/03/21(日) 13:53:040165デフォルトの名無しさん
2010/03/21(日) 14:12:13http://jbbs.livedoor.jp/bbs/read.cgi/news/4988/1269124859/
ICO - 国際著作権機構
ttp://warezer.net/search/user/3201
割れてる人は気おつけて
0166デフォルトの名無しさん
2010/03/21(日) 14:42:40パラレルライブラリはOpenMP型で、MPI型のはAxum。
ttp://msdn.microsoft.com/en-us/devlabs/dd795202.aspx
まだ研究段階っぽい。最終的にはC#に成果を吸収という流れだろうか。
0167デフォルトの名無しさん
2010/03/21(日) 15:21:20ちゃんと Join する。
スレッドいっぱいたつけど、全部のタスクが終わるまで待ってくれる。
>>148
同時に C++ 向けにも並列処理ライブラリが追加されるけどね、VS 2010。
C++ の時代、分野次第だなぁ。
10年は前に終わってるとこもあるし、あと10年は使わなきゃいけないとこあるし。
>>155
そんな処理は Parallel LINQ の方がいいな。
あと、集計部分(+= するとこ)は並列化してもおいしくない。
>>164
pragma だらけってのは、標準化がどうこう言われてしまう C++ の苦肉の策だろ。
0168デフォルトの名無しさん
2010/03/21(日) 16:08:18ほほぅ
キッチリ便利にはやってくれそうだなぁ…
3つの画像を同時に処理して終わったらその結果を判定して処理
とかやってるから単純なマルチスレッドでやるよりイイかもしれねぇ。。。
ちょっと期待したい
0169デフォルトの名無しさん
2010/03/21(日) 16:34:39[Parallel 4]
for(){
}
まぁ文法的に無理ぽ
0170デフォルトの名無しさん
2010/03/21(日) 16:38:361コアの環境でoptionなしで使うとスレッドは使わずにメインスレッドで処理してしまう。
ParallelOptions option = new ParallelOptions() { MaxDegreeOfParallelism = 4 };
Parallel.Invoke(option, () => Worker("aaa"), () => Worker("bbb"), () => Worker("ccc"), () => Worker("ddd"));
0171デフォルトの名無しさん
2010/03/21(日) 16:48:43ここは本当に初心者スレなのか?w
0172デフォルトの名無しさん
2010/03/21(日) 16:50:440173デフォルトの名無しさん
2010/03/21(日) 16:56:300174デフォルトの名無しさん
2010/03/21(日) 20:11:36まあ普通は初心者は並列処理を勉強しないものだけど、
勉強してみれば、このくらいは理解できるレベルだと思う
0175デフォルトの名無しさん
2010/03/21(日) 20:36:370176デフォルトの名無しさん
2010/03/21(日) 20:39:48並列処理の必要性を理解する、ことになるのでしょうね。
必要と思えれば頑張れる、そういうもんでしょ、言語習得ってさ。
0177デフォルトの名無しさん
2010/03/21(日) 20:41:330178デフォルトの名無しさん
2010/03/21(日) 20:48:120179デフォルトの名無しさん
2010/03/21(日) 20:58:050180デフォルトの名無しさん
2010/03/21(日) 21:05:140181デフォルトの名無しさん
2010/03/21(日) 21:16:46初心者ではなく低級者の発言ですね
0182デフォルトの名無しさん
2010/03/21(日) 23:34:27何の意味があるのそれ?
0183デフォルトの名無しさん
2010/03/22(月) 00:34:37DataGridViewで特定のCellから値を参照したいんですけど
方法がわかりません。お願いします。
0184デフォルトの名無しさん
2010/03/22(月) 00:36:04だけじゃね?
さすがにそれはヘルプ見てみようぜ
それとも何か勘違いしてるかな?
0185デフォルトの名無しさん
2010/03/22(月) 01:08:49とくにグローバル変数をどうにかしているときとか
0186デフォルトの名無しさん
2010/03/22(月) 01:14:00シングルトンのクラスに詰め込むの?
0187デフォルトの名無しさん
2010/03/22(月) 01:15:170188デフォルトの名無しさん
2010/03/22(月) 03:31:48いいサンプルはありませんでしょうか。
0189デフォルトの名無しさん
2010/03/22(月) 03:59:50FF11でツールを作ろうと思ってます。
0190デフォルトの名無しさん
2010/03/22(月) 04:12:210191デフォルトの名無しさん
2010/03/22(月) 07:09:130xFF11みたいな
0192デフォルトの名無しさん
2010/03/22(月) 09:49:370193デフォルトの名無しさん
2010/03/22(月) 13:39:33if ( a != null )
{
if ( a.Length > 0 )
{
(処理)
}
}
これ以上にスマートな記述方法は存在しますか?
0194デフォルトの名無しさん
2010/03/22(月) 13:41:26string.IsNullEmpty()
0195デフォルトの名無しさん
2010/03/22(月) 13:43:390196デフォルトの名無しさん
2010/03/22(月) 13:45:57ネストが深くなるのが嫌だから&&でつなぐ
0197193
2010/03/22(月) 13:49:55そうなんです。String.IsNullEmptyOrEmptyは文字列には使えますが文字列の配列には使えませんでして・・
>>196
たしかにネストが深くなるのはイヤなんですが、もし&&でつないでしまうとnullだった場合に
a.Legth のところで例外が発生してしまうんです。
だから泣く泣くネストを深くして対処しました。
0198デフォルトの名無しさん
2010/03/22(月) 13:52:310199デフォルトの名無しさん
2010/03/22(月) 13:55:070200デフォルトの名無しさん
2010/03/22(月) 13:58:020201デフォルトの名無しさん
2010/03/22(月) 14:03:15じゃあ&&でいいじゃないか。変数aがnullなら、他のことをやっても仕方がない。
0202デフォルトの名無しさん
2010/03/22(月) 14:07:00{
if ( a.Length > 0 )
{
(処理)
}
}
catch(ぬるぽ)
{
}
・・・違うの?
0203デフォルトの名無しさん
2010/03/22(月) 14:09:57本気で言ってるの?
ぬるぽをキャッチしようとする奴始めて見た
0204193
2010/03/22(月) 14:10:15> &&で繋ぐと、結果が偽になった時点でそれ以降は評価されない
判定式の順番は重要ですか?
たとえば a がnullのとき
if ( a.Length > 0 && a != null )
{
(処理)
}
とやってしまうと最初の a.Length > 0 で例外が発生したりしませんか?
0205デフォルトの名無しさん
2010/03/22(月) 14:10:21GetDirectoryNameはファイルパスからフォルダパスを求めるもんですし・・・
0206デフォルトの名無しさん
2010/03/22(月) 14:10:550207デフォルトの名無しさん
2010/03/22(月) 14:11:38左から
>>205
DirectoryInfo.Name
0208デフォルトの名無しさん
2010/03/22(月) 14:23:47お前の経験が浅いのではw
>>204
&&の前後が逆
0209デフォルトの名無しさん
2010/03/22(月) 14:25:22ありがとうございます!
0210デフォルトの名無しさん
2010/03/22(月) 14:26:170211デフォルトの名無しさん
2010/03/22(月) 14:28:27{
}
catch(Exception e)
{
}
なんて書いてるソースはよく見るね
0212デフォルトの名無しさん
2010/03/22(月) 14:29:34回答としては無い
0213デフォルトの名無しさん
2010/03/22(月) 14:30:50テストソースとしてならいいんじゃない?
それで納品したら次回はないと思うけど
0214デフォルトの名無しさん
2010/03/22(月) 14:31:09新規プロジェクト作成したくなる衝動に駆られるよね
この衝動に名前つけようぜ
0215デフォルトの名無しさん
2010/03/22(月) 14:31:10まぁそれ自体が間違ってるわけじゃないけど
わかってない臭はするな
0216デフォルトの名無しさん
2010/03/22(月) 14:32:05現実逃避
0217デフォルトの名無しさん
2010/03/22(月) 14:42:190218デフォルトの名無しさん
2010/03/22(月) 14:44:43どんなException出しても同じ対応するの?
0219デフォルトの名無しさん
2010/03/22(月) 14:48:29var notNullEmptyAry = ary.Where(s => !string.IsNullOrEmpty(s));
0220デフォルトの名無しさん
2010/03/22(月) 14:49:49後処理がいるのは別にきまってるだろw
0221デフォルトの名無しさん
2010/03/22(月) 14:51:52配列の各要素にnull/空文字列が含まれているかどうかなんて話、誰もしてないぞ
0222デフォルトの名無しさん
2010/03/22(月) 14:52:22ソースが汚いと思う
0223デフォルトの名無しさん
2010/03/22(月) 15:01:590224デフォルトの名無しさん
2010/03/22(月) 15:02:22処理
0225デフォルトの名無しさん
2010/03/22(月) 15:05:440226デフォルトの名無しさん
2010/03/22(月) 15:05:52さすがに配列のオブジェクトがnullで正常処理とか・・・
そういうのが正常だと言える例あるの?
0227デフォルトの名無しさん
2010/03/22(月) 15:07:58致命的な例外もわざわざCatchするんですね
かっこいい!
0228デフォルトの名無しさん
2010/03/22(月) 15:09:20ローカル変数ならあると思うけど
0229デフォルトの名無しさん
2010/03/22(月) 15:22:370230デフォルトの名無しさん
2010/03/22(月) 15:24:22つまりnullになることあるな。もちろん0件でも正常
0231デフォルトの名無しさん
2010/03/22(月) 15:29:32>>193のような条件判別では普通>>202のようにはしない
0232デフォルトの名無しさん
2010/03/22(月) 15:37:59他の言語ならそうだがC#なら正解
エラー処理のために条件分岐やるのはVB6.0で止まっている奴
条件分岐は何かの処理をさせたいから使うわけでエラー処理のためにするべきではない
つまりこれだけでいい
try
{
//何かの処理
}
catch{}
0233デフォルトの名無しさん
2010/03/22(月) 15:39:56一般的にtry-catch構文はオーバーヘッドが大きいといわれているけど、
C#(clr)でも同じことが言えるの?
なにかこの辺について言及したいい記事はありませんかね。
0234193
2010/03/22(月) 15:41:49>>208
どうもです(´・ω・`)ノ
&&で結ばれた判定式が左から順番に判定されて、条件に合致した時点で残りの判定式の判別は
破棄されるとは知りませんでした。
つまり>>193は
if ( a != null && a.Length > 0 )
{
(処理)
}
と簡潔に記述できるわけですね。
0235193
2010/03/22(月) 15:42:32> そもそも>>193は、正常な処理をif文のブロック内に書いてる時点で
> ソースが汚いと思う
:(;゙゚'ω゚'):!
その件に関しましては常々疑問に思っておりました。
メインとなる処理はif文の中で記述するべきか、外で記述するべきかに関してです。
メインとなる処理はif文の外に書くべきでしたら>>193は
if ( a == null || a.Length == 0 )
{
return false;
}
(処理)
とするべきなんでしょうか?
0236デフォルトの名無しさん
2010/03/22(月) 15:43:390237デフォルトの名無しさん
2010/03/22(月) 15:43:53そういうことはC#ではやらない
0238デフォルトの名無しさん
2010/03/22(月) 15:44:250件とnullは違う意味で使うだろ、常識的に考えて
0239デフォルトの名無しさん
2010/03/22(月) 15:44:27>>224
0240デフォルトの名無しさん
2010/03/22(月) 15:45:38プログラムはケツまで流すものだとか考えてる人なら
正常処理だけif文に入れる
ようは好きにしろ
0241デフォルトの名無しさん
2010/03/22(月) 15:47:20そもそもDBの場合
まず件数引っ張ってからデータ取得しない?
0242デフォルトの名無しさん
2010/03/22(月) 15:48:280243デフォルトの名無しさん
2010/03/22(月) 15:49:16件数そのものを先に欲しい場合はそうするかもしれないが、
普通はカーソル機能を使って最初の1行目だけをもらう。
全部引っ張るようなメモリ食うようなことは避ける。
0244デフォルトの名無しさん
2010/03/22(月) 15:52:120245デフォルトの名無しさん
2010/03/22(月) 15:56:43delegate bool EmptyDelegate(string[] s);
EmptyDelegate emp=IsEmp;
if(emp(s))
{
(処理)
}
private bool IsEmp(int n)
{
if ( a == null || a.Length > 0 )
return false;
}
}
0246デフォルトの名無しさん
2010/03/22(月) 16:00:15普通のメソッドでなくデリゲートを使うのはなんで?
0247デフォルトの名無しさん
2010/03/22(月) 16:11:070248デフォルトの名無しさん
2010/03/22(月) 16:13:10おまえがやれ
0249デフォルトの名無しさん
2010/03/22(月) 16:14:11算術記号も同様に
0251デフォルトの名無しさん
2010/03/22(月) 16:18:22おまえがやれ
0252デフォルトの名無しさん
2010/03/22(月) 16:22:54■ このスレッドは過去ログ倉庫に格納されています