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

■ このスレッドは過去ログ倉庫に格納されています
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

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

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/04/13(火) 18:55:44.96ID:ufUQjDoVa
>>172
言いたいことは分かるけど「何をやってるかなんてコード読めば解る」というのは
あくまで理想であって常にそうできるわけじゃない。

何をやっているか書いてくれた方がありがたい場合もあるよ。

>>176
そんなことをルールで強制する理由はないと思うよ。
2021/04/13(火) 19:02:46.98ID:arsZDomXD
>>177
何をやってるかがコメントとコードで乖離してる事があるのが問題
英語でthirteen daysって言ってるのに、
字幕には2ヶ月って書かれる戸田奈津子の翻訳みたいな事が起きうる
2021/04/13(火) 19:08:03.49ID:KJ4k5XjpM
>>178
逆に、コメントを書かせることでコメントを書きやすいコードになるという面はあると思うよ
クラスやメンバの責務が十分に明確ならコメントと実態の乖離なんてそう起きるものではない
2021/04/13(火) 19:14:53.40ID:ufUQjDoVa
>>178
コメントはバグる可能性があるからコメント書くな、
なんて言ったらバグる可能性があるのはコードも同じなんだから
コードも書くなってことになっちゃうよw

「不必要なコメントは有害無益」は正しいけど、それは
必要なコメントを否定する根拠にはなりえない。
2021/04/13(火) 19:40:32.77ID:arsZDomXD
>>180
コメントがバグるって話じゃなく、
書いた人の「つもり」がコメントとして残るのが危うい
実行時にどう動くかを決めるのは、コメントではなくコードなのだから、
コメントを読んでコードを読んだつもりになれるのも危うい
2021/04/13(火) 19:42:57.23ID:arsZDomXD
入門書の多くがコメントの書き方を蔑ろにしてるのが元凶だと思うんだよね
ほぼ単なるメモ機能としての記載しかされてない
2021/04/13(火) 19:46:12.88ID:arsZDomXD
続いちゃったので議論スレに移します
https://mevius.5ch.net/test/read.cgi/tech/1469538912/82
2021/04/13(火) 19:48:22.85ID:DZHUx02Q0
「コードを読めば何してるか分かる」のだから、メンテ忘れで誤ったコメントが残ったとしても問題ないとも言える。
・・・たまにブチ切れたくなることがあるけどな。
2021/04/13(火) 19:53:58.09ID:1xWi7ZbJ0
>>182
あれは解説を見ないとプログラムが理解できない人向けの本なんだからそれをコメントに書くのは当たり前じゃん
2021/04/13(火) 20:27:38.26ID:vPRWCVoWM
>>184
> 「コードを読めば何してるか分かる」
ならコメントなんていらんだろw
2021/04/13(火) 20:43:00.23ID:YIOTduDg0
>>172
YOLOv5をC#に移植して内容を説明しては
くれまいか?

そんなに簡単な話なら誰も論文なんて読まないよ〜 :-p
2021/04/13(火) 21:22:13.67ID:51HoYqEa0
ドキュメント代わりにしてるから入れる
///<summry>
の形式のやつ

doxygenで出力してモジュール設計書として納品して一丁上がり
2021/04/13(火) 21:30:50.70ID:cA2aWYvl0
クラス図もシーケンス図もねぇのになにいってんだこのバカ
2021/04/14(水) 05:43:13.79ID:C2CdPm+G0
>>186
だから要らないって話だろ
var hoge = items.First();
で最初の要素を取得するなんてコメントは要らん
記載するならwhy何故取得するのかだけ書けばいい

もし動作について記載したくなったなら、それはメソッド化するとかを検討した方がいい
2021/04/14(水) 06:13:30.67ID:NHvKxhVFM
>>190
だからと言って
> メンテ忘れで誤ったコメントが残ったとしても問題ないとも言える。
ってアホだろ、って言う指摘なんだが…w
2021/04/14(水) 07:02:48.39ID:C2CdPm+G0
それはアホだけどコメント入らないも的外れって指摘なんだが
2021/04/14(水) 07:55:29.84ID:IRkO9LrOM
>>192
>>184の全文読んでから出直してこいよw
2021/04/14(水) 10:15:09.46ID:+thTLvERM
宗教が合わないと作成者本人が綺麗に作ったつもりでも読みにくくてしょうがないからブロック毎に動作の概要ぐらいはコメントで書いといて欲しいわ
2021/04/14(水) 10:31:27.70ID:GNdqlmcr0
なんだよ、せっかく議論スレに移ったのについてきてねーじゃん
正直者が馬鹿を見る世界
もう移らん、絶対移らん(笑)

俺はコメント入れてほしい派

読めば判るっつってもさ、
コード書いてる本人ですら
何やってるか分かってない場合もあるからな(笑)
せめてコメントで
「ここではこんなことをしてる(つもり)」
って書いてくれら「全然そうなってないだろ!」と突っ込める
2021/04/14(水) 11:35:41.20ID:pb7R6DhS0
xxxInternal
xxxPublic
xxxOverride
2021/04/14(水) 11:40:36.85ID:tyZiRMgdM
パワーポイントやエクセル内の文字列を検索するクラスってありますか?
windowsの検索窓ではなく…
2021/04/14(水) 11:48:50.60ID:RaIqb6oIM
>>197
Windows Searchを使えば検索窓と同等の機能がプログラムから使える
2021/04/14(水) 11:53:46.39ID:tyZiRMgdM
>>198
素早い回答ありがとうございます!
そんなのあったのですね!検索力不足を痛感しました…
調べてみます。
2021/04/14(水) 14:15:46.62ID:MmF8o4I50
議論スレに移れないってことは、
コメント付けたところで読めない無能だから無意味って証明になったな
2021/04/14(水) 14:21:26.07ID:IGhCcGj6a
>>200
何度も言うけど、真の無能はそれが自分を棚上げした物言いである、
という簡単な事実に気づく程度のこともできないお方だよ。

これ割とマジで大丈夫かと思うわ
2021/04/14(水) 14:23:38.27ID:IGhCcGj6a
ついでに、これも何度も言ってるが、そんなくだらない「交通整理」に誰も従わないのは
「交通整理」の欺瞞性とそれを主張している人間の卑しい動機に普通は気が付くから。
2021/04/14(水) 17:19:19.99ID:gLzfQxv5D
>>202
卑しい動機って何?
2021/04/14(水) 17:43:05.15ID:fKew9GPPM
他人を見下し自分が主導権を握りたいという自分勝手な承認欲求が行動原理
2021/04/14(水) 17:58:45.23ID:d4l1z4pL0
>>202
暴れて飛行機から下ろされ
飲食店で入店拒否されて暴れて警察を呼ばれ
警察を殴った誰かはTwitterで同じこと言ってたなw
2021/04/14(水) 19:48:09.33ID:5dAhuQZZ0
>>193
その 184 だけど。w
「コードを読めば何してるか分かる」な人は、そもそもコメントがなくてもいいんだから、書かれていても無視すればいい。
コメントが欲しい人は、コメントの弊害(メンテ忘れとか)の現状を承知の上でそう言ってるんだから、そもそも問題ない。

つまり、コメントがいる/いらないの論争は無意味だからやめとけってことなんだよ。
その上で「コードを読めば何してるか分かる」ように丁寧な書き方を目指せば済むことじゃん。

まあ自分はブロックと言うか処理単位でのコメントは出来るだけ書くけど。
2021/04/14(水) 19:57:35.09ID:un1gf4OwM
だってコメント邪魔なんだもん
2021/04/14(水) 20:17:08.74ID:22Gnyx3vM
・コメントがあるとノイズになり視認性が落ちる
・コメントには嘘が混ざっていたり情報が欠落していることがあるので常にコードとコメントの整合性を確認しながら読まなくてはならない
・コメントに嘘を混ぜたり情報を欠落させないために細心の注意を払わないとコードを更新できなくなる
2021/04/14(水) 21:19:55.23ID:5dAhuQZZ0
これは茶化しで書くけど。
コメントがなければストレスなく読める美しいコードなんて見たことないなあ。
2021/04/14(水) 22:05:49.52ID:MpN5sHI3M
>>206
> つまり、コメントがいる/いらないの論争は無意味だからやめとけってことなんだよ。
誰もそんな論争してませんよ…
もしかして>>186をコメント不要という主張だと思ったのか?w
2021/04/14(水) 22:33:48.02ID:5dAhuQZZ0
そーなのか。
じゃあバカな私に分かるようにおまえ様の主張をきちんと述べてみてくれ。
2021/04/15(木) 07:44:33.23ID:UZqM7amYM
>>211
>> メンテ忘れで誤ったコメントが残ったとしても問題ないとも言える。
> ってアホだろ、って言う指摘なんだが…w
213デフォルトの名無しさん (ブーイモ MM3e-VRFv)
垢版 |
2021/04/15(木) 08:01:46.43ID:PPG2Aw5dM
改修履歴をコメントで残すとかいうのさえなけりゃ
他のコメントはコード読むのに邪魔になりはしない
2021/04/15(木) 08:08:37.68ID:OPERSbUtD
>>211
>>183
2021/04/15(木) 09:10:14.90ID:UMT499lla
必要だからどの言語もコメント機能が有るのでは?
2021/04/15(木) 10:39:52.56ID:V+OBz7ue0
言語ではないけどjsonってのが有ってだな
2021/04/15(木) 11:20:52.75ID:ZYoZizjK0
>>209
ほんこれ
2021/04/15(木) 11:28:50.53ID:VIeSEXX8M
>>216
あれなぜコメントの機能を持たせないのか不思議だわ
{
"$comment": "コメント"
}
みたいな形でコメント書くという方法もあるみたいだけど気持ち悪いし
2021/04/15(木) 11:44:04.13ID:V+OBz7ue0
最初に作った人が「コレはデータだからコメント不要」って取り付く島もないんだとか
VsCodeの設定ファイルみたく独自で拡張してjsonもどきになっているよな
2021/04/15(木) 20:44:07.32ID:ggX3n8E30
jsonなんて人間の読めるもんじゃないと思う
ダブルコーテーションが目にキツイ
2021/04/15(木) 20:56:31.12ID:yv1G2zip0
>>218
JSON自体は仕様がもう確定してるから。
jsoncとかJSON5とかRelaxed JSONとか拡張した別仕様ならある。
2021/04/15(木) 23:45:13.23ID:025iJfef0
json便利だけど、protobufを使うようになってから使用頻度減ったなー
2021/04/16(金) 21:25:28.58ID:UPAcC/fc0
1つの一連の処理で一度に10回以上は失敗する可能性があるんだけど
例外って複数ストックできる?
2021/04/16(金) 21:36:31.59ID:WuJ5uN/Q0
できるよ
ValidationでエラーためてIsValidで確認するのと同じ
2021/04/16(金) 21:41:19.41ID:AE+nXjed0
try{
...
}catch(Exception ex){
exceptions.Add(ex);
}finally{
continue;
}

こんな糞コード見たことないけどな。
2021/04/16(金) 21:41:25.62ID:UPAcC/fc0
デーモンコアと
マイナスドライバーを設定
try{
while(米が勝つまで回す){
@測る
Aマイナスドライバーを動かす
}
}
finally
{
Bデーモンコアを離す
Cif(青い光りが見えた){
Dみんなを退避
E逃げる
F救急車を呼ぶ
G遺書を書く
}
}

大体こんな処理なんだけど
B〜Gは途中で例外起きても
最後までやってほしいらしい
っていう一連の処理なんだ
どのエラーや例外も全部保存したい

>>224
なんかサンプルないですかね?
2021/04/16(金) 21:53:27.03ID:XmBIRBCo0
溜めておいた例外を最後にAggregateExceptionのInnnerExceptionsにセットして投げれば
2021/04/16(金) 21:54:23.20ID:UPAcC/fc0
>>227
なんかそういう処理の書き方の流れが知りたい感じです
2021/04/16(金) 22:18:19.07ID:57BTnFcs0
年内に死にそう
2021/04/16(金) 22:48:51.32ID:yteCGRud0
NlogつかってファイルかDBに残すのが現実的じゃね?
https://nlog-project.org/
こんなやつ
2021/04/17(土) 00:39:50.34ID:v4ZcCEOKa
>>223
失敗してても処理が継続される時点でそれを例外を呼ぶべきか、そもそも疑問に感じるね。
2021/04/17(土) 01:02:22.39ID:v4ZcCEOKa
class DaemonSequenceException:Exception
{
  public Exception FooResult { get; set; }
  public Exception BarResult { get; set; }
....
}
とかみたいに他の部分の成否と無関係に実行できる各部分に名前をつけて、
その部分の例外をプロパティーで持つとかするのかね知らんけど
2021/04/17(土) 10:56:45.87ID:F6GtSG/H0
DirectoryInfo.GetDirectories は例外を送出するけど処理は継続する
2021/04/17(土) 20:32:02.82ID:mfYtpggw0
まあ、結論としては
c#的にはこういう複数の処理が失敗するまたは終了処理も失敗するケースは言語的には完全に想定外ってことですかね
2021/04/17(土) 20:42:29.21ID:IkH2FR7eM
>>234
そもそも一体何をしたいのかさっぱりわからん
記録したいだけなのか失敗毎になにか処理したいのか
2021/04/17(土) 20:47:08.33ID:mfYtpggw0
>>235
1メソッドでたくさん失敗するんです
でも例外って1つしか返せないじゃないですか?
2021/04/17(土) 20:47:45.31ID:7MTKb57l0
>>234
地道に処理毎にtry{}catch(){}で囲めばいいだけ
言語のせいにするのはお門違い
2021/04/17(土) 20:50:06.01ID:mfYtpggw0
>>237
そもそも例外で返すのが間違いということでしょうか?
2021/04/17(土) 20:56:09.74ID:7MTKb57l0
>>238
<1>
var exceptions = new List<Exception>();

<2> (処理の数だけ作る)
try
{
 処理
}
catch( Exception e )
{
exceptions.Add( e );
}

<3>
throw new AggregateException( exceptions );
2021/04/17(土) 20:59:45.02ID:mfYtpggw0
>>239
ありがとうございます
それって受け側ってどう書くんでしょうか?
2021/04/17(土) 21:15:57.36ID:PG7156wz0
>>240
受け側って何を指すのかわからないけどエラーをcatchしておいて投げなおしているだけじゃね
>>230の考え方でエラー起こるたびに「〜の処理中に〜のエラーが起きました」って全部記録する形から作っていけば?
エラー発生しても続行させる処理の方が大変になると思うしとりあえず一通り作ってみた方がいい
2021/04/17(土) 21:17:13.40ID:8nmJAkjBM
>>236
だから受け側で何をしたいんだよ…
2021/04/17(土) 21:20:05.07ID:mfYtpggw0
>>241
普通に

try
{
}
catch(exception ex)
{
}

でaggregateexceptionってキャッチできますか?
2021/04/17(土) 21:23:05.33ID:gq87BRHm0
簡単なサンプルで試してみればいいでしょ…
2021/04/17(土) 21:24:17.27ID:3+8Yd0vAa
たぶん欲しいのはエラーのログなんだろうね。
あるいはPOSTでやるようなチェックリスト?

例外オブジェクトをエラーを表す目的で使ってもいいとは思うけど、
何がしたいのか目的をはっきりさせずに「例外をストックできるか?」とか質問するから
みんな混乱する。
2021/04/17(土) 21:38:41.80ID:8nmJAkjBM
なぜかこういう人は何をしたいのか書かないんだよな…
まあもういいや、相手もしてもしょうがなさそうだし
2021/04/17(土) 21:38:56.54ID:7MTKb57l0
>>243
それで出来るけど、catch( AggregateException ex )で受けた方が
AggregateException.InnerExceptionsを参照しやすくていいんじゃない
2021/04/17(土) 21:42:46.43ID:mfYtpggw0
>>246
正直
俺もよくわからない(笑)
2021/04/17(土) 21:43:49.75ID:mfYtpggw0
>>247
ありがとうございます
受け側はなんの例外がくるかしらないんですよ多分
2021/04/17(土) 21:51:17.10ID:6GAIvEwc0
例外を見ればどの処理で発生した例外なのか確実に分かる場合はいいけど
そうじゃないならList<Exception>だとたぶん困るよね
2021/04/17(土) 22:17:04.15ID:svTSVNg/M
>>250
どこで発生した例外かを知りたいなら例外にその情報を入れとけば良いだけだろ
2021/04/17(土) 22:42:26.62ID:6GAIvEwc0
>>251
>>239の例ではそれをやってないから困るんじゃねって話なんだけどさ
2021/04/17(土) 23:35:25.92ID:svTSVNg/M
>>252
ExceptionでもSourceに入れるとかMessageの一部に入れるとかやりようはいくらでもあるだろ
2021/04/17(土) 23:49:44.95ID:CX6JLVJZM
エスパー回答すると、Disposeをしっかり作ってusingを使え、が顧客が本当に欲しかったもの
255デフォルトの名無しさん (ワッチョイ d768-B9Cj)
垢版 |
2021/04/18(日) 00:46:37.58ID:hpbx6fns0
C#の話と関係無いかもしれませんが、パッケージの開発環境って今の時代何がありますか?
完全にオフラインで使える開発環境とかって無いんでしょうか?コマンドプロンプトしか無いんでしょうか?
2021/04/18(日) 01:09:20.83ID:IgLv47etM
落ち着け(´・ω・`)
パッケージ、開発環境、コマンドプロンプト
全然話が繋がっていない
2021/04/18(日) 08:55:30.53ID:v8qpskqd0
開発環境と言われても困るな
聞きたいのはここら辺?
https://it-kyujin.jp/article/detail/1512/
2021/04/18(日) 18:43:20.44ID:H0K908230
なんとなくエスパーすると、開発ソフトをインストールさえすれば、その後はネット非接続で何でも開発出来る環境が理想ってこと?
なら、たぶん無い。

.net sdk使って、標準ライブラリだけ使うなら出来るんかな?
結局必要なライブラリやらランタイムをDLするか、他のPCでDLして開発PCに入れる事になりそうだけど。
2021/04/18(日) 18:52:54.76ID:qPyS0oex0
>>258
待て待て、標準ライブラリだけでもオフラインで開発できるなら、回答しては「Yes」じゃないか?
特に、その「他のPCでDLして開発PCに入れる事になりそうだけど」が出来るんだしさ

>>255
目的を話せ
俺のエスパー能力をフル発揮すると、
セキュリティ上、スタンドアローンで動かさんといかんPCがあって、そこで開発したいだよな?
260デフォルトの名無しさん (ワッチョイ d768-B9Cj)
垢版 |
2021/04/18(日) 21:38:47.12ID:hpbx6fns0
>>258
ありがとうございます!!!
環境を自分で作る以外ないんですかね。無謀すぎますね。
コンパイラ作るわけじゃないですからね統合環境は。
>>259
そうそう単にセキュリティの心配です。
オフラインだと全く外部に漏れる心配ないわけじゃないですか。
めちゃくちゃ安心するじゃないですか。

何でインターネットに繋いでないとプログラミング環境が整わないような
状況なんでしょうか?どう考えたってオフラインのほうがよくないですか?
2021/04/18(日) 23:39:25.09ID:svx6jcyS0
今はネットワーク繋いでなんぼの時代だから
2021/04/18(日) 23:42:54.47ID:4BU0O/MkM
そういうセキュリティの気にし方をするのであれば、普段使いのPCとは別に
個人情報を一切入れないPCを1台用意して開発勉強専用にするのが一番安心できると思うよ
外に漏れて困るようなレベルのコードを書くならダメだけどさ

というかMicrosoftDocsやGitHubやStackOverflow/Qiitaとか一切閲覧できない環境で
NuGetやNPMに登録されてる出来合いのライブラリもまったく利用しない縛りを入れて
自分の能力だけで1から100までコードを書けるなんてすごいなあ
俺にはそんな縛りプレイしてたらとてもじゃないけど開発にならないや
2021/04/19(月) 01:35:18.62ID:X+u8pzLd0
インターネットにつながっていないが故に管理がおろそかになってパッチ適用がされない弊害の方がやっかい
日立のランサムウェアなんかはまさにそれ
2021/04/19(月) 01:49:10.86ID:c6NDAp6p0
構造体(値型)を関数の参照渡し以外で、参照する方法ってありますでしょうか?
配列の構造体にアクセスするコードを書いているのですが、
逐一配列の添字計算が入るのも嫌なので避けたいと思っています。
添字の数は関数の中では変わりません。
今は関数の参照渡しで使っていますが、他に方法は無いのかなと思いまして。
2021/04/19(月) 02:02:38.37ID:Kd9UEe0s0
>>264
refローカル変数じゃあかんの?
2021/04/19(月) 02:03:15.10ID:lMV2Jqgd0
>>264
理想形が見えねぇ
2021/04/19(月) 02:06:16.22ID:4lrHWi0u0
配列の構造体って何?
2021/04/19(月) 02:06:36.98ID:XVH2We7ia
>>264
策士策に溺れてはいけない
愚直に一時変数を使いましょう
2021/04/19(月) 02:14:43.49ID:c6NDAp6p0
>>265
ref ってローカル変数に使えるんですね!
前に軽く試した時には右辺値にしかrefを記載してなかったので、
左辺の定義にもrefを記載すれば行けました。
有難うございました!
2021/04/19(月) 03:18:25.46ID:RtpbkBzw0
オフライン環境での開発だけど、
VS Community2019のオフラインインストーラをダウンロードして
オフライン環境に持ち込んで使ってる
c#でフォームのデスクトップアプリしか作らんので特に困ってない
2021/04/19(月) 07:43:09.06ID:rq760clV0
>>264
var p = &array[5];
2021/04/19(月) 07:51:00.81ID:trWXRHySM
ゆう君みたいにCSCで開発するのだ
2021/04/19(月) 08:22:30.53ID:X+u8pzLd0
>>270
バグや脆弱性対応は?VS2019って頻繁に更新されてるけど
2021/04/19(月) 08:27:27.76ID:eEvFTkhNM
>>273
offlineインストーラーも知らないのは開発者としてどうかと思う
2021/04/19(月) 09:01:07.98ID:qHBf6kdf0
getsetプロパティをFuncで呼び出せるようにしたいのですが可能でしょうか?
メソッドで括って呼び出せば良いのだろうけど直接Funcに入れる方法があるならそうしたいです
2021/04/19(月) 09:10:46.59ID:a1UfxEQG0
よく分からん
Func<string> func = () => person.Name;

Func<string> func = person.Name;
みたいに書きたいってことか? 無理だけど
func = person.Name.Surname;
のときperson.Nameがいつ解決されるのか判断つかないし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況