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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2018/08/05(日) 19:55:44.50ID:tZmoj8I+
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part138
https://mevius.5ch.net/test/read.cgi/tech/1528194762/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/

0952デフォルトの名無しさん2018/10/02(火) 15:07:02.75ID:ibUSG6OV
>>951
そうだけど、そんなので速度は稼げない
素直なメンテしやすいコードにしておかないと結局バグってて遅いゴミシステムが出来上がるぞ

0953デフォルトの名無しさん2018/10/02(火) 15:13:05.30ID:lpR7dPFU
そうですか〜読みやすさ重視ですか〜

0954デフォルトの名無しさん2018/10/02(火) 15:25:17.74ID:giBEQZ0B
読みやすさとかそういう問題ではない
断言するが、お前のプログラムのボトルネックはそんなところにはない
そういうくだらないことに時間を無駄に使ってると、バグ潰しをしたり本当のボトルネックを見つけて改善したりする暇がなくなり、
結果的にバグだらけでゲロ遅く使い物にならない糞が出来上がる

0955デフォルトの名無しさん2018/10/02(火) 15:33:51.14ID:77rOVAHm
>>951
もちろんそうだよ
ついでに言えば、else ifは使わずifとreturnをうまく組み合わせて使うと更に早いんじゃないかな

0956デフォルトの名無しさん2018/10/02(火) 15:40:49.43ID:sf+Shg+9
>>951
判定する条件式の中にすごく重い関数の戻り値があるなら極力避けた方が速くはなるが。。。
ここの諸兄たちが言うようにあんまり気にしない方がよかとね

0957デフォルトの名無しさん2018/10/02(火) 15:52:19.51ID:xEUi7AEU
50分岐なのか単に一か所に50ifが並ぶのか分からないけど、
どっちにしろまず設計がおかしいことを疑うレベルだねw

それが必要になるケースは絶対にありえないとまでは断定できないけど、
普通に考えれば何か間違ってる

0958デフォルトの名無しさん2018/10/02(火) 19:15:29.75ID:77rOVAHm
文字の判定やらデコードやら色々あるから別におかしくはないんじゃない

0959デフォルトの名無しさん2018/10/02(火) 20:19:02.96ID:vJb5Fq5Q
>>951
switchでcaseがすべて数値か文字列の定数ならif〜else if相当ではなくてジャンプテーブルに変換されて最適化される

0960デフォルトの名無しさん2018/10/02(火) 20:30:20.49ID:bw+oM93m
>>958
そんなん一気にif文で判別するのおかしいよ
個々の判定を別メソッドに切り出すべき

0961デフォルトの名無しさん2018/10/02(火) 20:34:18.50ID:LVKvBfXE
>>960
んで呼んだら50行並ぶんですね
わかります

0962デフォルトの名無しさん2018/10/02(火) 20:35:28.70ID:V4PRuizJ
>>957
コンパイラ作った時にあったよ
普通に素で解析するときはそうなる

0963デフォルトの名無しさん2018/10/02(火) 20:38:43.68ID:V4PRuizJ
リッチ―の作ったCコンパイラもずらっとswitchの下にcaseが並んでる
しかもgotoだらけ

0964デフォルトの名無しさん2018/10/02(火) 22:31:24.70ID:71TIb3fi
ふと思ったが、ifやswitchよりデリゲートの配列で組んだ場合、可読性は別としてどんなもん?

0965デフォルトの名無しさん2018/10/02(火) 22:33:29.94ID:71TIb3fi
ん、951は通信電文の解析処理を組もうとしてるのかな?

0966デフォルトの名無しさん2018/10/02(火) 22:51:46.79ID:PHVx+viB
>>964
単純な数値による分岐なら50くらいだとif並べたほうが速いだろうな

0967デフォルトの名無しさん2018/10/02(火) 23:53:56.61ID:71TIb3fi
おお
そっか

0968デフォルトの名無しさん2018/10/03(水) 03:19:05.44ID:1BUWQtFr
いやいや、ビルドした時点で単なる条件分岐文の羅列に変換されるんだから
早いも遅いも無い

0969デフォルトの名無しさん2018/10/03(水) 06:32:57.32ID:GxEu0OX8
ILではifの羅列に変換されてるね

0970デフォルトの名無しさん2018/10/03(水) 10:25:12.89ID:53fMVr1s
今試してみたけど条件の羅列にはならなかったよ
ただ実験は同じ関数を大量に登録するだけだけど、実際に使うにはデリゲート配列に関数を登録する所がめちゃくちゃになりそうだ

0971デフォルトの名無しさん2018/10/03(水) 19:45:09.01ID:vaeuJqrS
ライブラリ制作でもなきゃ
ILコードの速度より可読性優先でしょ

最近は性能がトレンドだけだも

0972デフォルトの名無しさん2018/10/03(水) 19:49:00.54ID:WJ9CzqGu
だきゃだも

0973デフォルトの名無しさん2018/10/04(木) 10:27:45.19ID:AqgyV2h4
ドラえもん

0974デフォルトの名無しさん2018/10/04(木) 11:35:52.27ID:z7XJZMIb
VisualStudio2017とC#でDLLとEXEのプロジェクトを含んだソリューションを構成しているのですが、
EXEのプロジェクトはブレイクポイントで止まるのにDLL側のプロジェクトはブレイクポイントを設定しても止まりません。
どうすれば止まるように設定することができるのでしょうか?

0975デフォルトの名無しさん2018/10/04(木) 11:42:31.93ID:z7XJZMIb
>>974
事故解決。
DDLの参照設定に誤りがありました。
無事ブレイクポイントで止まりました。

0976デフォルトの名無しさん2018/10/04(木) 12:09:23.53ID:HivlLKp0
>>975
質問したならせめてどう設定したのか書いてくれると助かる

0977デフォルトの名無しさん2018/10/04(木) 12:11:58.26ID:LF7COV6m
プロジェクトじゃなくてアセンブリを直接参照したんだと思うよ

0978デフォルトの名無しさん2018/10/04(木) 17:53:02.89ID:JnxMNCXd
正規表現で、特定の変数に格納された文字列が行頭に含まれるときにマッチさせたいのですが
変数にメタ文字が含まれているとそのままメタ文字として機能してしまいます。
\Q〜\Eを使おうとすると認識されないエスケープシーケンスと出てしまうのですが
呼び出した変数をエスケープする方法はありませんか?

string tag = "."; //この変数はユーザー入力により可変させたい
Regex r = new Regex("^"+ tag, RegexOptions.Multiline);
MatchCollection mc = r.Matches(text, 0);

0979デフォルトの名無しさん2018/10/04(木) 17:57:50.18ID:+1iioCH6
何を言ってるのjかさっぱりわからないけど
\のエスケープは\\だよ

0980デフォルトの名無しさん2018/10/04(木) 18:03:01.48ID:JnxMNCXd
>>979
「.」が代入された変数をマッチ条件として呼び出したときに
「\.」として読ませたいんです…… 説明下手ですみません

0981デフォルトの名無しさん2018/10/04(木) 18:06:55.71ID:+1iioCH6
やっぱり意味がわからないよ

string.Replace

0982デフォルトの名無しさん2018/10/04(木) 18:09:55.61ID:+1iioCH6
行頭マッチならstring.StartWith()

0983デフォルトの名無しさん2018/10/04(木) 18:09:57.35ID:58olDMZF
Regex.Escape

0984デフォルトの名無しさん2018/10/04(木) 18:14:09.25ID:JnxMNCXd
>>983
これでした! ありがとうございます!
Regex r = new Regex("^"+ Regex.Escape(tag), RegexOptions.Multiline);
でいけました

0985デフォルトの名無しさん2018/10/04(木) 18:35:26.88ID:A2T5Igf7
ID:+1iioCH6

0986デフォルトの名無しさん2018/10/04(木) 18:42:53.36ID:+1iioCH6
スレ汚し失礼しましたとか書けばいいのか

0987デフォルトの名無しさん2018/10/04(木) 18:44:59.38ID:hCvwn5pe
>>980
次スレ立てて
立てられないならそう書いて

0988デフォルトの名無しさん2018/10/04(木) 18:50:46.18ID:JnxMNCXd
あっ980踏んだの気付いてませんでした
立ててきます

0989デフォルトの名無しさん2018/10/04(木) 18:57:34.68ID:JnxMNCXd

0990デフォルトの名無しさん2018/10/04(木) 18:58:45.39ID:iLCCeyjR
>>986
恥ずかしい奴ってことで晒されてるんだぞ

0991デフォルトの名無しさん2018/10/04(木) 18:59:38.71ID:hCvwn5pe
>>989
スレたて乙

0992デフォルトの名無しさん2018/10/04(木) 19:30:48.59ID:NR8ALYp6
アプリで使用する最大スレッド数ってどう決めるのがいいですか?

0993デフォルトの名無しさん2018/10/04(木) 19:32:22.83ID:hCvwn5pe
>>992
動作環境に配慮する
動作スレッド占有したら迷惑かもと思ったら少なくする

0994デフォルトの名無しさん2018/10/04(木) 19:32:31.16ID:NR8ALYp6
単純にCPUのスレッド数を最大に設定しておけばいいですか?
それともCPUのスレッド数-1とかの方がいいのでしょうか?
なんか決め方に基準とか規則とかって考え方あったら教えてください

0995デフォルトの名無しさん2018/10/04(木) 19:33:24.53ID:NR8ALYp6
>>993
そうそう今まではこのように
少し曖昧な形で決めてたのでなんか明確なやり方あったらなあと思って
書き込んでみました

0996デフォルトの名無しさん2018/10/04(木) 19:33:38.12ID:hCvwn5pe
>>994
無いよそんなもの
仕事でやっているのなら会社の先輩なりクライアントに聞いて

0997デフォルトの名無しさん2018/10/04(木) 19:36:48.58ID:NR8ALYp6
>>996
無いっていうのはどんな設定しても
結局スレッドのコントロールはOSレベルでされるし
アプリケーションの処理内容次第で占有率とかが違うからってことですか?

0998デフォルトの名無しさん2018/10/04(木) 19:49:35.37ID:SzxHzs6N
tiffのヘッダ情報を参照する方法ってどのようにすれば良いのでしょうか
画像読み込みは見つかるのだけどヘッダ情報参照方法が見つからず

0999デフォルトの名無しさん2018/10/04(木) 20:53:42.03ID:4K2yXx2T
>>992
case by case

1000デフォルトの名無しさん2018/10/04(木) 21:07:43.98ID:hGGFGhl9
System.Drawing.Bitmapに読み込んでPropertyItemsから取得する 全部取れるわけではない
System.Windows.Media.Imaging.BitmapMetadataを使う 大体取れるはず
ヘッダだけ読んで画像データは読み込みたくない!ってなら標準ライブラリには存在しないな

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 60日 1時間 12分 0秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。