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

1デフォルトの名無しさん (ワッチョイ 9e9f-LwdJ)2018/10/04(木) 18:56:38.41ID:JnxMNCXd0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

>>80
C時代の名残りはVBAに強く引き継がれ
VBA使いがC#に引き継いで行く

最初からpythonやる人間を雇うのが正解

87デフォルトの名無しさん (ワッチョイ ffeb-JlWZ)2018/10/11(木) 14:06:58.98ID:sbec5Ilz0
JavaをやっていてJavaらしいコードを書ける人は大勢いるだろうけどさ
C#らしいコードを書ける人って、C#でプログラミングをしてる人の1割もいないんじゃねえのか?

88デフォルトの名無しさん (ワッチョイ c7e3-9/x8)2018/10/11(木) 15:05:55.06ID:HHTldmez0
千行近いメソッドで変数が先頭でまとめて宣言されてるC#のコードみるとゲンナリ

89デフォルトの名無しさん (ワッチョイ 7fa5-7Kxw)2018/10/11(木) 16:31:07.59ID:8OHEO6Pp0
だってBasicから始めた自分は
変数は頭にまとめて書いてある方が分かりやすいモン!

>>80
>それとも上部のpublicの所に書くのがいいんですか?

と書いているので、質問の意図はメソッド内の変数の宣言や初期化の位置についてではなく、
同じクラスのインスタンスを複数のメソッドでnewして使ってる時に、
これをローカル変数ではなくフィールドにした方がいいのか?ってことじゃないのかな。

そうであるなら答えはNo。
フィールドにしなくても要件を満たせるものをフィールドにしてはいけない。

何にしても、質問は意図が分かるように書いて欲しいね。

91デフォルトの名無しさん (ブーイモ MMff-7iFr)2018/10/11(木) 18:53:33.96ID:EPVjjDDWM
forのループ変数がループの外で宣言されて使い回しされてるのわろた

92デフォルトの名無しさん (ワッチョイ c7e3-9/x8)2018/10/12(金) 09:28:14.69ID:cMc4b2ec0
クソコーダーのこだわりなんざどうでもいいからさっさと動くのリリースしろよ。テストできねーじゃねぇか。

93デフォルトの名無しさん (ワッチョイ 2775-00Iy)2018/10/12(金) 09:48:42.91ID:T14O4Tjf0
板違い

W indows Fromアプリを作っています。
途中でアイコンを変更しました。Formプロパティ部分とプロジェクトのプロパティ-アプリケーションのアイコンの2か所です。
実行時のFormとエクスプローラでも詳細表示は変更後のアイコンになるのですが、エクスプローラでの大アイコンやショートカット、ドラッグした時のアイコンが古いままです。
どうすれば新しいアイコンに更新できますか。

95デフォルトの名無しさん (ワッチョイ 27f2-7Kxw)2018/10/12(金) 11:01:50.14ID:4rHGu3Q90
一度Windows標準のアイコンに戻して
再度新しいアイコンを選択してSaveしてから
再起動すれば更新されてない?

>>94
アイコンファイル自体に問題がある、なんてオチだったりしない?

97デフォルトの名無しさん (オッペケ Sr9b-xlqx)2018/10/12(金) 12:13:39.26ID:a9HH9GNYr
>>94
アイコンが変更されるのはWindowsの気まぐれだから変更されるまで待て

>>95>>96>>97
レスありがとうございます。
アドバイス試してみましたがダメでした。気長に待ってみます。

99デフォルトの名無しさん (ワッチョイ 5fe9-DjIR)2018/10/12(金) 13:49:04.90ID:Prl0TAqQ0
アイコンってどっかでキャッシュクリア的なことできなかったっけ?

100デフォルトの名無しさん (オッペケ Sr9b-xlqx)2018/10/12(金) 14:37:18.55ID:a9HH9GNYr
>>99
やってみたけどダメだった
気長に待つしかない

101デフォルトの名無しさん (ワッチョイ 272b-JlWZ)2018/10/12(金) 16:30:01.41ID:arkneguz0
質問ですが
デバッグ構成でのexeとリリース構成でのexeは
デバッグ情報が邪魔する分、デバッグexeの方が遅いという話は知っていましたが
「微々たるもんだろ」とあまり気に留めてませんでしたが
それが原因と思われる現象に当たりまして・・・
デバッグは問題無く通るので実行すると、データが混雑すると固まるのです
試しにリリース構成のexeにしたら問題無く動きます
どうやらデリゲートのBeginInvokeを使っているので
非同期処理になりタイミングずれにデバッグ情報が相まって固まってるようなんだけど
こういう場合
「リリースexeで問題無いならいいじゃん!」なのか
「いやいや、タイミングがずれるとエラーが出る可能性があるなら対処しておくべき!」なのか
どうなんでしょうね?

102デフォルトの名無しさん (ワッチョイ c78a-9/x8)2018/10/12(金) 16:37:59.21ID:LyO2C2Nx0
いいわけないやろ

103デフォルトの名無しさん (ワッチョイ bf8a-4Hut)2018/10/12(金) 16:42:13.45ID:qSk0EFmG0
Html Agility Pack を使ってHTMLのスクレイピングをしているのですが、
↓のソースだと<h1>タグが存在していないとNULLエラーになります。
Try Catch を使わないでエラーを出さずに済む方法ってありますか?

       // Html Agility Pack
var htmlDoc = new HtmlAgilityPack.HtmlDocument();

htmlDoc.LoadHtml(htmlText);

var elm = htmlDoc.DocumentNode
.SelectNodes(@"//h1")
.Select(a => a.InnerText);

104デフォルトの名無しさん (オッペケ Sr9b-xlqx)2018/10/12(金) 17:07:37.53ID:KdHLMfUOr
普通にnullかどうか判定するしかないっしょ

105デフォルトの名無しさん (ワッチョイ ff23-pt3f)2018/10/12(金) 17:11:16.61ID:jtGT9aS30
SelectNodesがnull返すなら
.SelectNodes(...)?.Select(...)

106デフォルトの名無しさん (スッップ Sdff-VXer)2018/10/12(金) 18:52:08.67ID:o8bzBYu9d
>>101
最適化

107103 (ワッチョイ bf8a-4Hut)2018/10/12(金) 20:37:39.56ID:qSk0EFmG0
>>104  .
SelectNodes(...)?.で解決しました
var elm?とか .Select()?とはやったのですがうまくいかず、わからなかったのですが
そこで使うんですね
ありがとうございました。

108デフォルトの名無しさん (ワッチョイ 67b3-QRc/)2018/10/13(土) 20:01:17.77ID:wM7VhDKV0
>>101
原因の予想をそう考えているなら、CPUクロックを 1GHzとか遅くしてリリースexeで試してみるとか
(PCに負荷がかかっててもうまく動作するかってこと)

109デフォルトの名無しさん (ワッチョイ ff9f-2Eea)2018/10/13(土) 21:21:39.91ID:YNebL+WU0
XMLを読み込んで編集して保存する方法はいくつか有るようだけど制約なければXDocument使っとけばOK?
ちなみに構造が複雑なので静的モデルを作ってデシリアライズ->シリアライズが難しい場合の話

110デフォルトの名無しさん (ワッチョイ e7c9-4Hut)2018/10/13(土) 21:43:12.63ID:78tDj7sA0
>>101
それReleaseでも負荷高くなったら起きるんじゃないのか

111デフォルトの名無しさん (ブーイモ MM0b-wEhW)2018/10/13(土) 23:30:26.22ID:LdRaeBfZM
>>109
それでいい
XMLを使わなければならない制約もないなら今のMSはJSON.NETを強く推奨してるけど

112デフォルトの名無しさん (スプッッ Sd7f-W7JH)2018/10/14(日) 00:53:17.18ID:RAs/0wRTd
PC版Lineに来る最新メッセージを読み取る方法ってある?
調べても出てこず...

113デフォルトの名無しさん (ワッチョイ 5feb-DjIR)2018/10/14(日) 08:53:21.20ID:m3J+i7Py0
>>112
Kakaotalkのメッセージはやったことあるけど
暗号化されいて凄くめんどくさいよ。
俺なら素直に諦める。

114デフォルトの名無しさん (スップ Sd7f-W7JH)2018/10/14(日) 09:15:43.47ID:rtryEG4ad
>>113
APIみたいなのはやはり準備されていないのね
把握した
調べまくる時間とか無駄にせず助かりました

115デフォルトの名無しさん (ワッチョイ bf0a-a0t8)2018/10/15(月) 10:13:33.82ID:TGR3LnQ40
console.writeってコンパイルの最適化時に削除されますか?

116デフォルトの名無しさん (ワッチョイ 5fe9-DjIR)2018/10/15(月) 10:28:59.02ID:pVjp+zOb0
>>115
されたら困る
それデバッグ用の機能じゃないよ

117115 (ワッチョイ bf0a-a0t8)2018/10/15(月) 10:43:50.18ID:TGR3LnQ40
最終リリースする時は、console.writeの類のものは削除しないとexeの中に入ってしまうんかな?

118デフォルトの名無しさん (ワッチョイ dfc3-EHN7)2018/10/15(月) 11:34:37.06ID:tgS2uc1V0
#if DEBUG
Console.WriteLine("Debugにゃん");
#endif

>>117
Debug.Writeの方を使えばよいのでは?
https://docs.microsoft.com/ja-jp/dotnet/api/system.diagnostics.debug.write

見ての通りConditional属性が付いてるから、Release時にはこいつを呼び出すコードそのものが消える

120115 (ワッチョイ bf0a-a0t8)2018/10/15(月) 13:56:29.01ID:TGR3LnQ40
>>119
ありがとうございます、Debug.Writeを使うようにします。

121デフォルトの名無しさん (ブーイモ MM6b-wEhW)2018/10/15(月) 15:20:25.49ID:mYzH73J7M
工数一週間以上の開発ならちゃんとしたロギングライブラリ使ったほうがいいよ

122デフォルトの名無しさん (ワッチョイ c7e3-FjYh)2018/10/15(月) 18:16:16.25ID:il4L6pQz0
>>121
全部クソ
なんでキューに入れんねん
キューに積む形のログ出力ライブラリは全部クソ

ログアウト id223しました
ログイン id223しました

ってアホかw

どのログ出力ライブラリの話をしているかは知らないが
キューで実装されているならログ順序は保証されるだろうに
もしくはスレッドセーフでないライブラリを複数スレッドから触っているか

124デフォルトの名無しさん (ワッチョイ c7e3-FjYh)2018/10/15(月) 19:55:33.87ID:il4L6pQz0
>>123
え?スレッド間で?
お前ちょっとだけ頭使ってレスしろよ

125デフォルトの名無しさん (アウアウウー Saeb-pt3f)2018/10/15(月) 21:07:45.41ID:SAlDu2eYa
>>123
情報が小出しかつ不明瞭だからエスパーしているが
複数スレッドからログ出力する場合の順序が未保証だからじゃないか
それがログ出力ライブラリとして妥当かどうかは更に別の話になるが

キューに積む積まない問わず、いいログ出力ライブラリって何がある?

最近だとSerilogかな
ファッキンビチグソlog4jのパクリ系じゃないからシンプルで使いやすいし、
後でログの解析が非常に容易

127デフォルトの名無しさん (ワッチョイ 07e0-SmB1)2018/10/15(月) 21:30:24.71ID:E6pr56BO0
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。

128デフォルトの名無しさん (ワッチョイ dfd2-7vHE)2018/10/15(月) 23:26:10.89ID:L3fZFxj50
log4系はネット上に情報が沢山あるのと
自分が溜め込んだ資産が沢山あるからつい使いまわしちゃうな
仕様は確かにファッキンだが

129デフォルトの名無しさん (ワッチョイ c7e3-FjYh)2018/10/16(火) 00:05:25.55ID:tUmXldvA0
>>128
使い方間違えててマルチスレッドモードになってない率95%のlog4さんじゃないですか

130デフォルトの名無しさん (ワッチョイ bf93-SRlQ)2018/10/16(火) 01:16:04.35ID:PMA7SNGw0
そのまま泳がせておけばよいのに

131デフォルトの名無しさん (ワッチョイ dfeb-JlWZ)2018/10/16(火) 11:56:04.25ID:L6l9R59e0
GUIアプリケーションでのawaitについて教えてほしいんだけどさあ
↓この処理をボタン等のイベントから実行した場合、JklあるいはAsdfasyncが終了したかどうかってどうやってメインスレッドから取得するものなの?
async Task Asdfasync(){
await Jkl();//終わるまで画面をロックさせたくないが、これが終わっていない段階で他のボタンを押されると困る
}

その戻り値は何のためにあると思う?

133デフォルトの名無しさん (ワッチョイ dfeb-JlWZ)2018/10/16(火) 13:32:46.61ID:L6l9R59e0
それが使えるのならありがたいけど、ボタンのイベントから呼び出されたメソッドの戻り値って取得できるものなの?

素直ににawaitの前後でボタンをDisable/Enableではあかんの?
そもそもそのためのawaitでしょう。

もちろん、常にそうできるわけじゃない(JKが終わったからって無条件でボタンをEnableに
できないような要件もありうるから)だろうけどほとんどの場合はそれでいいでしょ

135デフォルトの名無しさん (ワッチョイ 7f80-WnU0)2018/10/16(火) 13:48:09.68ID:TeNN2wBh0
await は非同期処理を、同期的に書けるもの

await で検索すれば?

>>133
そのAsdfasyncとやらは直接イベントに接続せずに
別のイベントハンドラから自分で呼び出すんやろ?

新着レスの表示
レスを投稿する