[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/29 10:32 / Filesize : 198 KB / Number-of Response : 931
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part57



1 名前:デフォルトの名無しさん [2010/03/20(土) 02:15:38 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

ふらっとC#,C♯,C#(初心者用) Part56
pc12.2ch.net/test/read.cgi/tech/1267348401/


関連スレ
C#, C♯, C#相談室 Part55(実質56)
pc12.2ch.net/test/read.cgi/tech/1260111240/1

VB.NET質問スレ(Part33)
pc12.2ch.net/test/read.cgi/tech/1263738929/1

C++/CLI part3
pc12.2ch.net/test/read.cgi/tech/1206447234/1

136 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:05:50 ]
>>133-134
ありがとうございます。
単語を調べて一つ一つ確かめてみます

137 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:09:55 ]
>>86
お前素人だろ


138 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:15:19 ]
なんでBackroundWorkerをそんなに毛嫌いするのかわからん。
素人専用とでも思いこんでるのか?

素人に使いやすい設計になってるのは事実だが、
別にやりたいことにあってれば普通に使えばいいじゃん。
普通に使えるのにわざわざ自分で同じような処理を実装して、
でそれがThread明示的に作ってとか、マイナスにしかなってない。



139 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 09:20:00 ]
用途に合ってなければ自分で制御するだけ、
誰も常にBackroundWorkerがいいなんて言ってないのにな。
まあそれでもThreadを自分で作ることはあまりないが。


140 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:14:40 ]
まあそれでもThreadを自分で作ることはあまりないが。

141 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:16:41 ]
今時代はスレッドプールですよ

142 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:31:31 ]
スレッド温泉でゆっくりしたいなあ

143 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:32:07 ]
スレッドプールって何?

144 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:01:50 ]
次はParallel.Forですね
簡単といってもBackgroundWorkerとは違ってこちらはアカデミックな感じだが



145 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:02:22 ]
ThreadPool

146 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:08:50 ]
>>134
できました。
継承してオーバーライドって便利ですね。
勉強になりました。

147 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:50:25 ]
まだ4.0の勉強してないんだけどParallel.Forとかって別CPUで処理させるんだよね?
いくつかParallel.Forで処理を同時にやってすべてが終わったかどうかのチェックはフラグかなんか持って
自分で管理しないとだめなのかな?

148 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:56:39 ]
parallel.forとかすげーな
もうC++の時代は終わってるな

149 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:03:03 ]
単純に適材適所でしょ
windowsなんかC/C++がなきゃ動かないわけだし

150 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:03:54 ]
まぁGUIクライアントを書く言語としてはC#の方が向いてるね

151 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:22:21 ]
>>147
並列ライブラリは直接使うとよほど単純なパターンを除くと非常にややこしいので、
Parallel Linqから使ったほうが簡単。
並列処理の結果を待つかどうかオプションで指定できる。

152 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:26:30 ]
>>151
そんなの知ってるよ

153 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:27:50 ]
>>151
なるほど
しかし、すげぇな・・・
4.0いろいろ贅沢な機能付きすぎだろ


154 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:29:06 ]
>>152
自己紹介乙



155 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:32:13 ]
並列ライブラリのforを本気で使おうと思ったらやたらと引数が多くなる。
1〜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);


156 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:34:33 ]
そんなの使わずマルチスレッドつかえよ
Parallel.Forなんて大して使えん
ループ内がそれそれ独立していなければ無理

157 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:37:16 ]
((;゚Д゚)) 決めつけ無理……………!!!


158 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:37:34 ]
結構使いにくそうだ…
でも・・・実装したからには何か目的が・・・・メリットがあるんだよな?


159 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:38:35 ]
Parallelライブラリはコア数に合わせて並列数を調整してくれるところにある。
自分でスレッド作って調整するのは大変だぞ?

160 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:39:16 ]
そうだね。

161 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:42:37 ]
うん

162 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:50:06 ]
>>155
そんな並列の意味が一切無い例出してどうすんのさ

163 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:52:50 ]
>>162
お前に言われる筋合いはないから

164 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:53:04 ]
もうちょっとMPIの様に透過的にだな・・



165 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 14:12:13 ]
【春祭り 】また割れ厨のスクショと個人情報が晒されてるぞ避難所5
jbbs.livedoor.jp/bbs/read.cgi/news/4988/1269124859/

ICO - 国際著作権機構
ttp://warezer.net/search/user/3201

割れてる人は気おつけて

166 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 14:42:40 ]
>>164
パラレルライブラリはOpenMP型で、MPI型のはAxum。
ttp://msdn.microsoft.com/en-us/devlabs/dd795202.aspx
まだ研究段階っぽい。最終的にはC#に成果を吸収という流れだろうか。

167 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 15:21:20 ]
>>147
ちゃんと Join する。
スレッドいっぱいたつけど、全部のタスクが終わるまで待ってくれる。

>>148
同時に C++ 向けにも並列処理ライブラリが追加されるけどね、VS 2010。
C++ の時代、分野次第だなぁ。
10年は前に終わってるとこもあるし、あと10年は使わなきゃいけないとこあるし。

>>155
そんな処理は Parallel LINQ の方がいいな。
あと、集計部分(+= するとこ)は並列化してもおいしくない。

>>164
pragma だらけってのは、標準化がどうこう言われてしまう C++ の苦肉の策だろ。


168 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:08:18 ]
>>167
ほほぅ
キッチリ便利にはやってくれそうだなぁ…
3つの画像を同時に処理して終わったらその結果を判定して処理
とかやってるから単純なマルチスレッドでやるよりイイかもしれねぇ。。。
ちょっと期待したい

169 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:34:39 ]
for文の前に属性書けたら楽そうだけど
[Parallel 4]
for(){
}
まぁ文法的に無理ぽ

170 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:38:36 ]
ParallelOptionsのMaxDegreeOfParallelismが必要だね。
1コアの環境でoptionなしで使うとスレッドは使わずにメインスレッドで処理してしまう。

ParallelOptions option = new ParallelOptions() { MaxDegreeOfParallelism = 4 };
Parallel.Invoke(option, () => Worker("aaa"), () => Worker("bbb"), () => Worker("ccc"), () => Worker("ddd"));


171 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:48:43 ]
並列処理とか……
ここは本当に初心者スレなのか?w

172 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:50:44 ]
いいんじゃね?

173 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 16:56:30 ]
まあ、Parallel.ForはちゃんとJoinしてくれるの?とか、結構初心者らしい質問な気もするが。

174 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:11:36 ]
並列処理といってもこのていどは初級レベルだろう
まあ普通は初心者は並列処理を勉強しないものだけど、
勉強してみれば、このくらいは理解できるレベルだと思う



175 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:36:37 ]
だね

176 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:39:48 ]
並列処理の使い方を理解できるというより、
並列処理の必要性を理解する、ことになるのでしょうね。

必要と思えれば頑張れる、そういうもんでしょ、言語習得ってさ。

177 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:41:33 ]
そして別スレッドからGUIコントロールにアクセスして怒られるんですね

178 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:48:12 ]
もう・・・ぷんぷんっ

179 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:58:05 ]
backgroundWorkerは自由度が低いから使いづらい

180 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 21:05:14 ]
いつまでそのネタ引っ張るつもりだ

181 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 21:16:46 ]
>>179
初心者ではなく低級者の発言ですね

182 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 23:34:27 ]
>>170
何の意味があるのそれ?


183 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 00:34:37 ]
質問します。
DataGridViewで特定のCellから値を参照したいんですけど
方法がわかりません。お願いします。

184 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 00:36:04 ]
DatagridView.Rows(0).Cells(カラム名).Value

だけじゃね?
さすがにそれはヘルプ見てみようぜ
それとも何か勘違いしてるかな?




185 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:08:49 ]
メソッドに戻り値つけないとどういう処理しているかわからなくなるね
とくにグローバル変数をどうにかしているときとか

186 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:14:00 ]
C#スレでグローバル変数とな!?
シングルトンのクラスに詰め込むの?

187 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:15:17 ]
フィールド変数だらう

188 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:31:48 ]
SlimDX/Direct3Dで描画してるウィンドウの中にWPFでコントロールを描画して使いたいんですが、
いいサンプルはありませんでしょうか。

189 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:59:50 ]
このスレレベル高すぎて何いってるのか全然わからないですがさらに初心者向けのスレってないんですか?
FF11でツールを作ろうと思ってます。

190 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 04:12:21 ]
今のFF11ってツールまで作れるんだな…。

191 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 07:09:13 ]
そういやFF11ってなんか言語っぽいもんな
0xFF11みたいな

192 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:49:37 ]
ボットでも作りたいのかね

193 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:39:33 ]
string型の配列aがnullでも空でもないことを判定するプログラムを考えています。

if ( a != null )
{
  if ( a.Length > 0 )
  {
    (処理)
  }
}

これ以上にスマートな記述方法は存在しますか?

194 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:41:26 ]
>>193
string.IsNullEmpty()



195 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:43:39 ]
それ、配列にも使えるのけ?

196 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:45:57 ]
無理だな
ネストが深くなるのが嫌だから&&でつなぐ

197 名前:193 mailto:sage [2010/03/22(月) 13:49:55 ]
>>194-195
そうなんです。String.IsNullEmptyOrEmptyは文字列には使えますが文字列の配列には使えませんでして・・

>>196
たしかにネストが深くなるのはイヤなんですが、もし&&でつないでしまうとnullだった場合に
a.Legth のところで例外が発生してしまうんです。

だから泣く泣くネストを深くして対処しました。

198 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:52:31 ]
ショートサーキットを使うように、|| でつなげばいいだろ。

199 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:55:07 ]
& じゃなくて && だよ?

200 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:58:02 ]
&&で繋ぐと、結果が偽になった時点でそれ以降は評価されない

201 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:03:15 ]
>>200
じゃあ&&でいいじゃないか。変数aがnullなら、他のことをやっても仕方がない。

202 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:07:00 ]
try
{
  if ( a.Length > 0 )
  {
    (処理)
  }
}
catch(ぬるぽ)
{
}

・・・違うの?

203 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:09:57 ]
>>202
本気で言ってるの?
ぬるぽをキャッチしようとする奴始めて見た

204 名前:193 mailto:sage [2010/03/22(月) 14:10:15 ]
>>200
> &&で繋ぐと、結果が偽になった時点でそれ以降は評価されない

判定式の順番は重要ですか?
たとえば a がnullのとき

if ( a.Length > 0 && a != null )
{
    (処理)
}

とやってしまうと最初の a.Length > 0 で例外が発生したりしませんか?



205 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:10:21 ]
フォルダパスからフォルダ名を取得するのってどうすればいいのでしょうか
GetDirectoryNameはファイルパスからフォルダパスを求めるもんですし・・・

206 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:10:55 ]
それはないわ。

207 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:11:38 ]
>>204
左から

>>205
DirectoryInfo.Name

208 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:23:47 ]
>>203
お前の経験が浅いのではw

>>204
&&の前後が逆

209 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:25:22 ]
>>207
ありがとうございます!

210 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:26:17 ]
null判定を例外で処理しようとするのは初心者

211 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:28:27 ]
try
{
}
catch(Exception e)
{
}
なんて書いてるソースはよく見るね

212 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:29:34 ]
初心者スレだから意見を聞きたいなら間違ってはいないが
回答としては無い

213 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:30:50 ]
>>211
テストソースとしてならいいんじゃない?
それで納品したら次回はないと思うけど

214 名前:デフォルトの名無しさん [2010/03/22(月) 14:31:09 ]
いろいろ作り込んだり、ぐちゃぐちゃになったりして、
新規プロジェクト作成したくなる衝動に駆られるよね
この衝動に名前つけようぜ



215 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:31:10 ]
>>211
まぁそれ自体が間違ってるわけじゃないけど
わかってない臭はするな

216 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:32:05 ]
>>214
現実逃避

217 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:42:19 ]
別にExceptionで受けてもいいだろ

218 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:44:43 ]
>>217
どんなException出しても同じ対応するの?

219 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:48:29 ]
>>193
var notNullEmptyAry = ary.Where(s => !string.IsNullOrEmpty(s));

220 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:49:49 ]
>>218
後処理がいるのは別にきまってるだろw

221 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:51:52 ]
>>219
配列の各要素にnull/空文字列が含まれているかどうかなんて話、誰もしてないぞ

222 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:52:22 ]
そもそも>>193は、正常な処理をif文のブロック内に書いてる時点で
ソースが汚いと思う

223 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:01:59 ]
どっちが正常なのかは文脈次第じゃないか

224 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:02:22 ]
if(a==null && a.Length == 0) return;

処理



225 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:05:44 ]
|| が正解

226 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:05:52 ]
>>223
さすがに配列のオブジェクトがnullで正常処理とか・・・
そういうのが正常だと言える例あるの?

227 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:07:58 ]
>>220
致命的な例外もわざわざCatchするんですね
かっこいい!

228 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:09:20 ]
>>226
ローカル変数ならあると思うけど

229 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:22:37 ]
初心者からかって遊んでるやつしかいないのかここは

230 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:24:22 ]
外部からデータ貰って配列に入れるときとか、0件だと配列そのものができてない
つまりnullになることあるな。もちろん0件でも正常

231 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:29:32 ]
try-catch はコストが大きいから
>>193のような条件判別では普通>>202のようにはしない

232 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:37:59 ]
>>231
他の言語ならそうだがC#なら正解
エラー処理のために条件分岐やるのはVB6.0で止まっている奴

条件分岐は何かの処理をさせたいから使うわけでエラー処理のためにするべきではない
つまりこれだけでいい
try
{
//何かの処理
}
catch{}

233 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:39:56 ]
>>231
一般的にtry-catch構文はオーバーヘッドが大きいといわれているけど、
C#(clr)でも同じことが言えるの?
なにかこの辺について言及したいい記事はありませんかね。

234 名前:193 mailto:sage [2010/03/22(月) 15:41:49 ]
>>207
>>208
どうもです(´・ω・`)ノ

&&で結ばれた判定式が左から順番に判定されて、条件に合致した時点で残りの判定式の判別は
破棄されるとは知りませんでした。

つまり>>193

if ( a != null && a.Length > 0 )
{
    (処理)
}

と簡潔に記述できるわけですね。



235 名前:193 mailto:sage [2010/03/22(月) 15:42:32 ]
>>222
> そもそも>>193は、正常な処理をif文のブロック内に書いてる時点で
> ソースが汚いと思う

:(;゙゚'ω゚'):!

その件に関しましては常々疑問に思っておりました。
メインとなる処理はif文の中で記述するべきか、外で記述するべきかに関してです。

メインとなる処理はif文の外に書くべきでしたら>>193

if ( a == null || a.Length == 0 )
{
  return false;
}

(処理)

とするべきなんでしょうか?

236 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 15:43:39 ]
catchした時は重くなるけど通常は関係ないんじゃないの






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<198KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef