ふらっと 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/08(木) 14:17:05.70ID:d++ONVxC0
>>110
TensorFlowでもええん?ダメなん?
2021/04/08(木) 16:37:37.25ID:kfGdZKXS0
これってDLL importとかしなくなるってことですか?
https://www.atmarkit.co.jp/ait/articles/2101/29/news113.html
2021/04/08(木) 17:10:27.78ID:eSL736QZ0
>>113
MSが共通Wrapper作りましたってことでDLL importは必要なくなるし、アンマネージ
部分についてもお約束を守ればよくなるみたいだけど、サンプル見ると色々手続きが
面倒臭そうで使い勝手は良くなさそう
2021/04/08(木) 17:48:44.06ID:4s+x/uBpa
void*とかobjectにするしかないだろうしアホみたいなオーバーロードの山になるだろうし
始まる前から破綻の予感しかしない

っていうか何で今更
2021/04/08(木) 18:56:34.79ID:HxWbcod1M
そもそもガンガンWin32API使うなら素直にC/C++使うし、C#だとちょっとつまみ食いする程度にしか使わんから今のままでもいいや
117デフォルトの名無しさん (ワッチョイ a3e6-JnQU)
垢版 |
2021/04/08(木) 19:11:09.64ID:7Q+Xoj4V0
apiで使う構造体とかの面倒くささが無くなるならいいんじゃない?
2021/04/08(木) 20:07:04.02ID:SlRPMViD0
>>112
需要と供給で単価は決まるからなぁ
2021/04/08(木) 20:11:07.35ID:Rugi+GK60
Cじゃない言語でOS作り直してくれよもう
2021/04/08(木) 20:20:01.96ID:SlRPMViD0
アセンブラけ?
2021/04/08(木) 21:41:44.08ID:oExYloS10
OSのようなハードに近いレベルの言語となると、Rustが流行ってるのかな。
C#でそういうのも出来ると良いのにね。
2021/04/08(木) 22:08:07.77ID:5uUtmx9J0
>>113
https://dot-sharp.com/net-getdetailsof/
Shell32.dllを使うとき、com参照を追加するだけでC#のライブラリと同じ程度の手軽さで使えました
これが増えるってならいいんじゃないかな
2021/04/09(金) 01:46:32.36ID:tMeqLsRz0
>>118
PyTorchはずっと不人気だったのに
今調べてみたら、ここ二年ぐらいでTensorFlowと拮抗してんな
ま、いいや、どっちか使えりゃ問題ないだろ
2021/04/09(金) 04:55:29.41ID:dxRxz0Yw0
C#をネイティブコンパイルできうようにすればいいだけだと思うが。
なぜ回り道をするのか
2021/04/09(金) 05:03:11.50ID:mVBnPI5w0
>>123
無理せずPaddlePaddle使ってたんでえぇで

日本では需要ないけど
2021/04/09(金) 10:06:28.56ID:tMeqLsRz0
>>125
PaddlePaddleはダメダメだな
日本だけじゃなくて、世界でもダメな奴
127デフォルトの名無しさん (ワッチョイ 86bb-eWep)
垢版 |
2021/04/09(金) 15:11:32.43ID:Sg2n4mcl0
AI関連は、何を使えるかよりどこの博士号を持ってるかの方が重要なんだろ?
2021/04/09(金) 19:20:58.42ID:mVBnPI5w0
CNTKの求人って見ないな
ttps://www.bigdata-navi.com/
2021/04/10(土) 07:46:10.33ID:qc4cGBnV0
以前画面解像度切り替えのツールを作った時にvanaraといwin32apiのラッパー使ったな
構造体も用意してあって簡単に使えた
2021/04/10(土) 09:05:48.65ID:Zw7mVk6D0
win32って一々ラッパー挟まずとも実はC#側で結構調節してくれるんだよな
GetProcAddressみたいなANSI版しかないような関数でもstringそのまま放り込んでもちゃんと機能してびっくりした
2021/04/10(土) 20:01:50.03ID:00IQtlCT0
人はそれをマーシャリングと呼ぶのである
2021/04/10(土) 21:24:18.51ID:mb0ile8c0
a={1, 2, 3, 4}という配列が与えられて
更に10進数x=5が与えられた時、5を2進数にして101なので
(最下位ビットがa[0]になります)
配列の要素1と3の和を出力せよという課題が出ました

var r = 0;
for (int i = 0; i < a.Length; i++)
if ((x & i << 1) == 0)
r += a[i];
で求める答えが出そうだと思ったのですが
4ではなく3が出ます。どこが間違っているんでしょうか
2021/04/10(土) 22:21:05.25ID:ZQT/KDjfa
>>132
わざと間違えてない?w
static int GetBit(uint x, int position)
{
  return (int)((x >> position) & 1);
}
2021/04/10(土) 22:33:06.71ID:mb0ile8c0
>>133
その書き方だと通るんですよね..
下のように解説してるサイトがあったのでそう書いてみたのですが
なんかおかしいんです

ビット bit に i 番目のフラグが立っているかどうか if (bit & (1<<i))
2021/04/10(土) 23:55:58.75ID:GWhpBmtX0
え。
>if ((x & i << 1) == 0)
>if (bit & (1<<i))
2021/04/11(日) 00:13:20.51ID:Zc34G5gB0
あ、やっと気づきました
bit操作理解せずに、コピペで済ませてた弊害が出ました

ありがとうございました
2021/04/11(日) 00:18:38.88ID:gSPWaQTLa
>>134
それはたぶんC#ではなくてCのコード
「bit & (1<<i)」この式の型は何?
Cと違ってC#のifの()の中の式はboolでなければダメ

まあこれは初心者が知らずに混乱しても仕方ないかもしれない。
でも>>132のコードの何が間違ってるかは初心者でも自分で考えれば分かるでしょ。

とりあえず問題を小さい問題に分けて分割統治することから始めましょう。
>>133はそういう意味で書きました。
2021/04/11(日) 06:53:51.52ID:+8zEqMg4d
Typescriptじゃインターフェース名にI(アイ)をつけないのが推奨されてるけど、
C#もそうなったりするのかな。
2021/04/11(日) 08:10:38.23ID:JfLfucqJ0
破壊的変更を.NETユーザーが受け入れてくれるなら良いんじゃね
2021/04/11(日) 08:23:58.76ID:DcU1Z0EW0
付けろと言ってる
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/identifier-names
2021/04/11(日) 12:26:31.31ID:y6cz0vLM0
C#でIが取れなかったのはCOMの影響があったからとかなんとか
今更C#の方針を変えることはないだろうね
2021/04/11(日) 13:01:27.23ID:+MjFaIzva
エディタで色分けしてくれればいclass, struct, interface, abstract
2021/04/11(日) 17:06:24.47ID:LOxmuPpta
プリフィクスのIは字面からインターフェイスだと分かるようにしたい、という強迫神経症的な動機というより、
単純に名前のバッティングを機械的に回避できる点が大きいんじゃないの?
144デフォルトの名無しさん (ワッチョイ df01-slfm)
垢版 |
2021/04/11(日) 17:51:20.56ID:v+npbxj+0
どうせインターフェースにIを付けなくなっても、実装クラスのいい名前が思いつかずになんとかImplってサフィックスつけるんだろ?
2021/04/11(日) 19:02:53.13ID:jqn7J9El0
Delphiだと、クラスにはTypeのT、パラメータにはFieldのFを付けるんだよね。
InterfaceのIはその名残なのかな、とか思ったんだよ。
そして、そういうのは無くしていく傾向なのかな、と。
2021/04/11(日) 20:39:38.45ID:9ef64+I30
>>144
付けないよ
そんなの付けるのJavaやってたやつくらいやろ
2021/04/11(日) 21:55:51.16ID:XlCnUXyn0
命名規則で一番上手くいってるのはC#と思う
インターフェースにプリフィックスIをつけるから命名で困った時にImplとかやらなくてすむし
プロパティ名は大文字で始めるから小文字で始めるローカル変数とぶつかりにくいし
2021/04/11(日) 22:00:03.96ID:XlCnUXyn0
で、最近は名前がさらぶつかりにくくなるようにメンバ変数はm_を付けるスタイルに個人的に変更した
2021/04/11(日) 23:11:51.93ID:Jjs5QDLf0
キャメルケースwww
2021/04/11(日) 23:30:29.10ID:gtdLzQZJ0
まあVSの恩恵でかいよなあって
2021/04/12(月) 00:03:30.52ID:5s47Rc9D0
>>147
こういう適当な名前を付けるやつがいることにピキってるっぽいね
適切な名前にすりゃブッキングしねえから名前付けをサボるなってことらしい
2021/04/12(月) 00:35:55.51ID:z0nrn9OY0
なるほどなぁ
ちなみにIListはなんて名前にすればより適切だと思う?
2021/04/12(月) 00:41:39.46ID:JfC2SlE/0
おまえ馬鹿か
たいていぶつかるのはローカル変数や外部に公開しないクラス名だろ
JavaのImpl使うのだって、内部クラスや非公開や内部のエンジンクラスとか
2021/04/12(月) 00:43:02.12ID:JfC2SlE/0
そんなのに適切な名前なんかブッキングできねぇよカス
2021/04/12(月) 04:43:49.73ID:FczQKoXE0
>>152
Microsoftの推奨する命名規則を参考にすれば良いんじゃない?
つまり、I付きPascal形式でスペル省略不可のフルネームで名詞を表せば良いのかな。
自由に付けても良いけど、.Net Frameworkと調子を合わせると違和感が無いと思う。
2021/04/12(月) 06:14:41.91ID:nRLgqnE00
うちの会社、昔から変数名の1文字目にデータ型の略称(?)をつける文化みたいで、
intのListがiListだったり、longのListがlListだったり、ちょっと困惑した。
2021/04/12(月) 06:47:12.36ID:HnVQKAJ10
>>156
郷に入っては郷に従え!

君の使って良い変数はI150からI300までな!
そこはFortran出身者の支配する村であった
2021/04/12(月) 07:54:06.97ID:lF7oqfJtD
MSの.NETプログラムにおける命名ガイドラインな
ttps://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/naming-guidelines
2021/04/13(火) 07:46:13.80ID:FVP0aIINd
皆さんコメント入れる? 命名規約とか守ってたらコメント要らないような気がしてきた。
2021/04/13(火) 08:25:02.43ID:lZomqcCZ0
>>159
いわゆるドキュメンテーションコメント的なものは入れる。
あと、実例みたいなの。
//引数にXXとYYとZZを渡したら、戻り値はAAになる。
2021/04/13(火) 08:48:00.08ID:cGgJVHDFa
>>159
入れる
2021/04/13(火) 09:02:05.69ID:t+pv5GMk0
visualstudioだとクラスやメソッドの1行前に///入力で自動補完されるからそれは使ってるかな
2021/04/13(火) 09:08:35.29ID:gWbnUgF3a
日付、所属、名前、旧コードはコメントに残すのが常識でしょ
2021/04/13(火) 09:19:57.30ID:Ehg3izfw0
ギャグかな?
2021/04/13(火) 11:05:10.28ID:fFoE8jgx0
バージョン管理ツール使ってるのに旧コード残すやつにはイラッとする!
特に不具合のコードをコメントアウトして残されてると、当てつけなのかと思ってしまう
2021/04/13(火) 12:14:15.55ID:YrXVy+xO0
コメントって入れるものだったんだ。
書くものだと思ってた。
2021/04/13(火) 12:48:28.16ID:ZNHsyNhsD
>>159
コメントには「なぜ」を書くんだよ
2021/04/13(火) 14:24:24.21ID:ovEIWddm0
なぜこんなコード書いたんですか?と書いて旧コードを残すわけですね
2021/04/13(火) 14:40:11.12ID:cQExUzr8M
168が仕様を理解せずおかしな実装を
したので辻褄合わせの辞書を実装しました by 167
2021/04/13(火) 16:02:36.93ID:ct/xqAfva
>>159
コメントは基本的には必要悪なので必要がない限り書かないのが正しいけど、
少なくともパブリックメンバーについては単純に「必要」かもしれんね。

ないと書いた人の意図を変に誤解してないか不安になって
結局中のコードを覗きたくなるかもしれない。
そんなことしなくて済むためのカプセル化のはずなのに
2021/04/13(火) 17:44:15.92ID:Kc5TdA4a0
1年後に自分の書いたコード読んで、何をやっているかちゃんと理解できるならば
書かなくてもよいんじゃないかなw
2021/04/13(火) 18:24:41.93ID:arsZDomXD
>>171
何をやってるかなんてコード読めば解るんだから、
そんなことのためにコメントは不要
「なぜ」そんなメソッドが必要か、
「なぜ」そのデータ構造やアルゴリズムを選択したか
なんていう、コードから見えない情報を記すのがコメント
2021/04/13(火) 18:31:59.11ID:KJ4k5XjpM
MS含めアメリカ製の高品質なコードって「なぜ」のコメントが無茶苦茶充実してるよな
日本だとだいたい // 〇〇処理 みたいな無意味なコメントか、ほとんど無いかのどちらか
SaaSとか一般的にレベル高いと思われてるはずの現場では、だいたい後者のパターンでほぼコメントが無い
根本的に論理的な言語能力に差があるんだろうなと思わざるを得ないわ
2021/04/13(火) 18:37:50.47ID:781G2uFla
コードレビューでコメントを書けって指摘されるじゃんw
2021/04/13(火) 18:43:17.63ID:/XAQKj46M
コメントなんて要らないんだよ
コミットログを見ればいいんだから
2021/04/13(火) 18:48:56.00ID:2mKMjuav0
private なプロパティってフィールドにするべきですか?
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
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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