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

1デフォルトの名無しさん (ワッチョイ 0f10-cd+Z)
垢版 |
2025/02/19(水) 22:09:43.22ID:U6FgMrZU0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part160
https://mevius.5ch.net/test/read.cgi/tech/1707610640/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
https://source.dot.net/
・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
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (アウアウウー Sa39-c/TO)
垢版 |
2025/02/23(日) 10:49:47.01ID:RRpMAqvoa
てすてす
2025/02/23(日) 17:00:06.55ID:69GNxyEN0
フォルダをまるごとコピーして再利用しようとするとだいたい失敗する
新しいプロジェクトを作って一つずつコードをコピペするしかない
2025/02/23(日) 18:36:31.18ID:5IrrdZem0
丸ごとコピーした後に、csprojをテキストエディタで書き換えとかWinMergeでマージとか普通にやるけど?
5デフォルトの名無しさん (アウアウウー Sa39-c/TO)
垢版 |
2025/02/23(日) 19:53:37.53ID:CZU86cpwa
>csprojをテキストエディタで書き換え

プログラマならスクリプトで是非
2025/02/23(日) 21:44:24.05ID:K8mfivgh0
ソリューションエクスプローラから登録してけよw
2025/02/24(月) 01:57:02.09ID:MrZQLcHx0
ver違い作る時コピーするだけで何もトラブったことがない
2025/02/24(月) 09:17:40.83ID:QzlwN7S/0
プロジェクトを丸コピーで失敗するって、UUID の変更を忘れてる場合じゃないの。
同じソリューションの下に同じ ID を持ったプロジェクトがあるといろいろと不都合があった気がする。

ソリューションとかプロジェクト名を変える目的で丸コピー後にテキストエディタで修正はわりとよくやるな。
9デフォルトの名無しさん (オッペケ Sr75-rIvZ)
垢版 |
2025/02/24(月) 16:56:48.08ID:qXEt7oPpr
git使おうよ…
2025/02/24(月) 18:04:49.50ID:6Uht1bH5M
ファイル単位で摘むことはあるが
丸ごとコピって再利用したことない
2025/02/24(月) 18:07:33.98ID:GZhUnClz0
クラスの再利用とかしないの?
2025/02/25(火) 00:26:58.76ID:qlq16AkJ0
普通クラス単位=ファイル単位だと思うが
フォルダ丸ごとってのが、どのぐらいの範囲で言ってるのかわからんが
ソリューションやプロジェクトファイルごとってんならそりゃ修正必要にきまってる
2025/02/25(火) 08:55:25.54ID:0IQvWwoZ0
クラスの再利用にプロジェクトフォルダの丸コピーは要らんしな
14デフォルトの名無しさん (ワッチョイ 7d49-dwch)
垢版 |
2025/02/25(火) 13:37:09.22ID:/vtPIyqp0
クラスの再利用にプロジェクトフォルダの丸コピーは要らんのですか?
15デフォルトの名無しさん (オッペケ Sr75-rIvZ)
垢版 |
2025/02/25(火) 16:22:53.50ID:LE8TO+SBr
俺氏Equalsのオーバーライドに挫折し同値比較メソッドを別途実装する
GetHashCodeとかもうわけ分からん
下手に触らんのが一番いい気がしてきた
2025/02/25(火) 19:57:31.81ID:knCfbka80
ラムダ式をデリゲートに代入する事無く、即値のまま関数として呼び出すにはどう書けば良いのでしょうか?
サンプルの1~2行目のように一旦デリゲートに代入してから関数呼び出しするのでなく、3行目のような雰囲気で直接関数として呼び出したいのです。

Func<double, double> func = x => Math.Sin(x);
double ret1 = func(2 * 3.14 * 0.5 * 0.5 * 1.73 * 1.73);
double ret2 = (x => Math.Sin(x))(2 * 3.14 * 0.5 * 0.5 * 1.73 * 1.73);

これだけですとラムダ式・匿名メソッドを使う意味がないのですが、? : の三項条件演算子やswitch式などで選ばれたラムダ式・匿名メソッドを呼び出したい場面がありました。
2025/02/25(火) 20:29:30.95ID:knCfbka80
半歩前進しました。デリーゲトへの代入式(の戻り値)を使用すれば呼び出せました。

Func<double, double> func;
double ret3 = (func = x => Math.Sin(x))(2 * 3.14 * 0.5 * 0.5 * 1.73 * 1.73);

ここからデリゲートを消せればシンプルに記述できそうです。
2025/02/25(火) 21:00:29.61ID:PDSzmXarM
>>15
vs codeではなくvisual studioでコーディングしたらいいよ
2025/02/25(火) 21:00:58.69ID:knCfbka80
いくつか書き忘れました。

double型の戻り値を重視したように見えるサンプルですが、実際はvoid型で副作用を持つ関数呼び出しです。
また、複数の関数が並ぶ中で、同じ引数を何度も何度も書きたくない/コピーしたくないというのが動機の一つです。
2025/02/25(火) 21:13:00.71ID:PDSzmXarM
ラムダ式はオブジェクトではない 式はオブジェクトではない
ラムダ式、メソッド自体はデリゲートに変換できるだけでオブジェクトそのものではないので他の言語のような使い方は出来ない

デリゲートに変換するとオブジェクトとして使えるだけ
2025/02/25(火) 21:16:40.70ID:PDSzmXarM
他の言語で言うファーストクラスオブジェクトではない
2025/02/25(火) 21:43:17.30ID:PDSzmXarM
でもその場でキャストしてデリゲートにキャストしたら使えると言えば使える
((Func<int, int>)(x => x + 1))(5);

果たしてこれがシンプルで美しいと思うかどうか
2025/02/25(火) 21:57:21.38ID:cYj9WpB+0
クラス再利用ならDLLにでもしとけ
2025/02/25(火) 22:08:31.81ID:knCfbka80
>>22
キャストを使う事でデリゲート変数を排除できる事を確認しました。オブジェクトでないラムダ式をオブジェクト化?するところがキモなんですね。
美しさはともかくとして、文字数・タイプ数が減りシンプルになりました。

本当に助かりました。ありがとうございます。
2025/02/25(火) 22:40:17.81ID:PDSzmXarM
多分間違ってたので訂正

ラムダ式自体はただの式の構文
でも内部的にはdelegeteのインスタンスでdelegeteとして扱われる
条件によっては推論が上手くいき何もせず変換できる場合もあるけどキャストで型指定しないといけない場合もある
2025/02/26(水) 06:21:11.46ID:eFEsNFcD0
ソースコード上の変数を排除したところで、人間が見る変数が居ないだけでデリゲートオブジェクトが生成されてることに何も変わりはないし全くの無意味
2025/02/26(水) 06:53:56.31ID:GJFyEYy90
FuncやActionの変数を用意して使った場合とキャストで直接使用した場合で
何が違うかって、変数宣言が無いのとIL状態でstlocとldlocが1回少ないだけ
2025/02/26(水) 07:33:10.91ID:cYj9WpB+0
1回って1サイクル分の1やん
気にすることねーわ
2025/02/26(水) 08:48:42.23ID:0IQvWwoZ0
だからまぁそんな無意味な事やめとけってみんな言ってる
誤差だしコードが美しいわけでも無いし見辛いし無駄な拘り
2025/02/26(水) 08:50:17.83ID:0IQvWwoZ0
あれ?日付変更でID変わってない?
2025/02/26(水) 08:53:53.57ID:2BrOjab30
オプティマイズされたらまるっきり違うコードになってるから気にすんな
可読性にだけ気を遣え
2025/02/26(水) 10:26:19.36ID:JZM7Z9v00
なんかできてるのに凝ろうとする人が多い
33デフォルトの名無しさん (ワッチョイ 8546-rIvZ)
垢版 |
2025/02/26(水) 13:38:57.23ID:auV1odXy0
ちゃんと動いてるforループを何とかLINQに書き換えようとしてみたりとか
2025/02/27(木) 13:11:13.24ID:JEIBcNTp0
最近はCopilot にお願いしてコード書いてもらってる
これってどっちが速いん?とか問い合わせたり
35デフォルトの名無しさん (アウアウウー Sa39-c/TO)
垢版 |
2025/02/27(木) 13:18:45.39ID:VQNvJTxha
自分で描くのが一番速い
2025/02/27(木) 20:02:50.88ID:27t7Hgkh0
JSONデコードのサンプルがあるでしょ
定型の不毛な作業に自動化を使う
昔は正規表現
ちょっと前はAutoHotKeyマクロ
今はCopilot free
道具は賢く使う
2025/03/13(木) 14:29:49.04ID:f4u7QkTor
厳密にはC#じゃなくてフレームワーク側のことかもだけど、C#の勉強しててのことなので
Windows11に乗ってる.NET Frameworkに含まれてるEFって、バージョン何のEF? どこみたらわかる?

延々と進化してるものなので、ここはひとつ、OSに抱き合わせになってるバージョンを基準に勉強してみたいのです
38デフォルトの名無しさん (ワッチョイ 16c0-L87b)
垢版 |
2025/03/13(木) 15:27:50.48ID:FkUIsblP0
そのままgrokに聞いたらEFは入ってないって言われたぞ
2025/03/13(木) 17:12:26.32ID:UZM60pXP0
一応、DLLはあるんだよ
> System.Data.Entity.dll
> System.Data.Entity.Design.dll
WUしたりはするものの、なにか追加インスコしたりとかはしてない
一応、System.Data.EntityClient.EntityCommandとか入ってるのが見える

そういや、オンゲの関係で、まだ22621で止めてるWin11だったけど
小出しですまんが、24H2でもそれは同じだと信じたい
2025/03/13(木) 19:00:57.26ID:UgxF9FgUM
一番疑問なのは何をしたいのかがわからないところ
それらが入っていて追加インストールなしで何ができるのか?
2025/03/13(木) 19:16:04.09ID:UZM60pXP0
OSに載ってる分だけで、何ができて、何ができないのか勉強したい
もちろん、?.はないし、タプルも面倒だし、Span<T>はない
でも、ないから、何かわかった気がするんだ そういう勉強法が好きなんだよ

一切何もインストールできない縛りってのが時々ある そんなときにも役立つ
C#5を使い倒そうっていう酔狂が社内にいるとはだれも思ってないからねw
2025/03/13(木) 19:20:23.41ID:suyt1LRW0
バージョン何もなにも、.NET Frameworkのバージョンだろ
2025/03/13(木) 19:28:35.46ID:UgxF9FgUM
EFが何かわかってないんだな…
2025/03/13(木) 23:01:15.86ID:5dkH7chP0
DLLがあるならそのファイルのバージョンみればわからんか?
2025/03/13(木) 23:14:22.55ID:LQBGtVU/r
ちなこんな感じです

> [assembly: AssemblyVersion("4.0.0.0")]
> [assembly: SatelliteContractVersion("4.0.0.0")]
> [assembly: AssemblyFileVersion("4.8.9032.0")]
> [assembly: AssemblyInformationalVersion("4.8.9032.0")]
> [assembly: ComCompatibleVersion(1, 0, 3300, 0)]
2025/03/13(木) 23:55:03.72ID:LZAxQ+M20
>>38
嘘吐きw

>>37
https://learn.microsoft.com/ja-jp/ef/efcore-and-ef6/support
EF4で作っとけば
2025/03/14(金) 06:56:24.12ID:dskBCbVIr
おお、そんなところに書いてあった ぐぐっても辿り着きませんでした
DbContext ないんですね、(物足りなくなったら)nugetすればいいんですけど
atmarkit の ef4basic の記事読んで、まずはObjectContext で遊んでみます
いったん持ち帰ります ありがとうございました
2025/03/16(日) 22:00:36.53ID:lAApXzJR0
Dapper使ってる人いる?
便利でコーディング量減るんだけど遅い気がしないでもない…
そしてバグの元になりそうで怖いが大丈夫かな?
2025/03/16(日) 22:11:25.14ID:0fK8nOYZ0
Dapperより早くしたいのならDataReaderを生で使うしか無いな
2025/03/16(日) 22:13:01.36ID:lAApXzJR0
やっぱりそうなりますよね
遅いの嫌いだからやはり生書きします
2025/03/16(日) 22:43:54.55ID:/E2Neb+f0
CoPilot楽だな
先にコメントで何をしたいか書いたら
それっぽいコードを吐き出して来るw
2025/03/17(月) 06:22:38.05ID:Owpv93Lf0
それっぽいだけではなぁ
2025/03/17(月) 08:34:57.39ID:W2D0KaNm0
書きたいコードのヒントにはなるから楽だぞ
2025/03/17(月) 08:35:54.32ID:w05vvqYC0
むしろプログラム初心者には混乱の素だったりw
55デフォルトの名無しさん (ワッチョイ d97c-7EP+)
垢版 |
2025/03/17(月) 18:07:38.63ID:2BanPNnj0
>>50
Dapperの方が早いぞ
2025/03/19(水) 09:01:46.30ID:pHlffSMJ0
今って変数に日本語使えたんだね
始めて知った…
2025/03/19(水) 09:29:29.10ID:bRZmXh740
>>56
基本的には最初から使えたのでは?
もっとも、積極的に使いたいとは思わんけど
2025/03/19(水) 09:30:56.50ID:SELrOmOx0
多バイト文字は文字コードの関係で上手くいかないだろ
2025/03/19(水) 12:13:04.74ID:WDKEEomI0
日本語入力モードに切り替える手間がね
2025/03/19(水) 12:52:49.19ID:TY+wcugD0
ユニコード……
2025/03/19(水) 17:29:36.49ID:QmEI0sUo0
配列の添え字にlong型を使えるようにしてほしいけど、無理だろうな
2025/03/22(土) 09:21:30.83ID:cNmtMr2B0
webview2でYouTube表示するとライブのチャット欄表示されないのなんで?
63デフォルトの名無しさん (ワッチョイ 6234-mqBt)
垢版 |
2025/03/28(金) 09:05:16.94ID:DZWtyvAm0
変数に漢字使えばめっちゃ楽だぞ
2025/03/28(金) 10:39:23.04ID:TQUEI/k9H
そう、ASPNETCoreとかででドメな業務システム作ってるけど
テーブル名・カラム名(DBのモデルクラス)、画面項目(VMクラス)を日本語で命名すると最高に楽になる
いままで英語物理名のうえに日本語論理名をわざわさドキュメントコメントしてたのがアホらしく思えるし、何よりソースコードが格段に読みやすくなる
2025/03/28(金) 10:39:59.82ID:STJ+zarcH
そう、ASPNETCoreとかででドメな業務システム作ってるけど
テーブル名・カラム名(DBのモデルクラス)、画面項目(VMクラス)を日本語で命名すると最高に楽になる
いままで英語物理名のうえに日本語論理名をわざわさドキュメントコメントしてたのがアホらしく思えるし、何よりソースコードが格段に読みやすくなる
2025/03/28(金) 10:57:39.69ID:3LII/z7y0
大昔.NET FRAMEWORK2.0の頃にMSとの協業でC#のサンプルコード作った時、変数には日本語使って下さいとMS担当者からお願いされた思い出
2025/03/28(金) 12:51:01.18ID:Q148Yzqv0
なんで連続書き込みでID変わってんのw
2025/03/28(金) 12:57:49.98ID:5u0+0QNa0
移動中(電車とか)とかならそういうこともあるんじゃねーの?
2025/03/28(金) 17:01:18.25ID:pDuEGOrO0
JPはじまりは匿名化サービスの串経由じゃね?
2025/03/28(金) 17:28:10.49ID:8eNM17rzM
知り合いは楽天モバイルだとJPになったと言ってたけど
2025/03/28(金) 17:34:05.06ID:9yLVdxrVM
どれどれ
2025/03/28(金) 21:36:25.60ID:8eNM17rzM
試してくれたのか
全然違うなw
2025/03/28(金) 22:06:03.44ID:2XDBVlxC0
Hはなんかモバイルがなる時があるとか
VPNのヤツだとか
そんな話を聞いたことがある
2025/03/28(金) 22:06:33.95ID:2XDBVlxC0
あ、HってIDの末尾のことね
ワッチョイのJPの方は良く分からないw
2025/06/08(日) 12:47:20.85ID:7kVUhAhp0
C#で2つの文字列即値を結合するには + 演算子を使うのでしょうか?
Cだと
"abc" "def"
のように空白や改行で文字列即値を結合した記憶があるのですが。
2025/06/08(日) 17:41:08.38ID:ta5/nFKb0
+を使う
2025/06/08(日) 17:47:09.11ID:ta5/nFKb0
printf_s("StringA"
     "StringB");

みたいなことがしたいなら、改行と+を使って頑張って
今のC#だと@""を使ってもいいかもしれないけど
2025/06/08(日) 18:10:15.45ID:7kVUhAhp0
>>76
それで行きます。ありがとうございます!
2025/10/06(月) 17:05:17.29ID:FfR5KHc3p
コードベタ書きで分けてる状況が分からない
2025/10/06(月) 17:41:36.39ID:QEznrZXm0
1文が長い時に横スクロールを避けるために改行する事はある
どうせコンパイル時に一つにまとめられるし
2025/10/06(月) 17:45:57.69ID:y7mtXu8V0
つーか4ヶ月も前の話題に何を今更おかしな噛みつきしとるのだ?
2025/10/06(月) 23:12:43.27ID:kioGxXsV0
てかもう4か月も経ってたか
レスを投稿する