C#, C♯, C#相談室 Part98

2024/06/29(土) 19:18:41.95ID:NohAfdfx0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2022 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (アウアウエー Sa82-viZ1)
垢版 |
2024/07/06(土) 09:45:55.57ID:tDR9EaCva
もう人居ないねここ
2024/07/07(日) 11:10:38.82ID:LxwuJOKK0
C#ってそんな廃れたのか、、、
2024/07/07(日) 13:30:41.60ID:nRN7u0+PM
星の手紙

スターレター
2024/07/19(金) 08:08:33.90ID:8mtfDqm5M
プロパティって、別クラスからprivateなフィールドにアクセスするためのメソッドという理解であってます?
自分のクラス内で完結するのであれば直接フィールドを操作すればいいですよね?
2024/07/19(金) 10:22:26.61ID:rAu+wfGe0
基本的にはそうだけどちょっとした小細工を仕込みたい場合とかにprivateプロパティという選択肢もなくはない
遅延初期化するものとかね(この用途では今はLazy<T>を使うけど)
2024/07/19(金) 10:35:14.12ID:IMeiXUMG0
フィールドのようにアクセス可能なクラスのインターフェースというかAPIを定義するのがプロパティ
中身は他のメソッド呼び出しの場合もあれば他のプロパティを元にした計算だけ行う場合もある

クラスのユーザーがフィールドにアクセスする必要がなく
継承して拡張する際にもフィールドにアクセスする必要がなく
クラス内からのフィールドアクセス時にも常にチェックすべき事前条件がなければ
privateフィールドを単純にラップするプロパティは基本的に不要
2024/07/19(金) 22:05:33.66ID:8mtfDqm5M
ありがとうございます
もう一点聞きたいんですが、プロパティ自体はアンチパターンではないですよね?
ある本にセッターを使うなら別にメソッド用意しろと書いてありました
理由はクラス外からメンバを操作してはいけないのと、値チェックができなくなるからと
これらは別にプロパティでもできるんで(そもそもプロパティはメソッド)、間違ってますよね?
2024/07/19(金) 23:31:48.25ID:QqZ5EOxb0
>>8
>ある本にセッターを使うなら別にメソッド用意しろと書いてありました
状況による
publicなセッターのほうが望ましいケースが稀なのは確か
2024/07/20(土) 16:52:32.64ID:euMlvBLf0
ぞもそもそれc#の本なのか?
なぜタイトルをぼかす
2024/07/22(月) 06:36:28.74ID:NgZAB9xM0
セッターゲッターとか久しぶりに聞いた気がする
2024/07/29(月) 14:46:58.61ID:AZP0hoR90
あれ?.NET CoreだとC++/CLIの1次元array使えない?
2024/07/29(月) 16:17:59.63ID:AZP0hoR90
よくよく考えたらすれ違いだなすまねぇ
2024/08/13(火) 12:58:30.17ID:qhmHbPMW0
実行ファイルのあるフォルダを取得しようとぐぐってためしたらカレントディレクトリを返してくるんだが・・なんか変わった?
2024/08/13(火) 13:03:50.93ID:NwhX+oy+0
取得するコード書いてくれにゃ答えられんよ
あと.NET 5以降なのか.NET Frameworkなのかとか
2024/08/17(土) 11:34:37.81ID:0uZEK+kK0
テキトーな疑問だけ投げて二度と来ない単発荒らしか>>14
2024/08/17(土) 18:26:07.56ID:7ysjw50y0
それもまたよし
2024/08/18(日) 14:40:47.88ID:SsGk7ZLr0
>>16
寂しがり屋なの?
来てほしかったの?
反応がない=同じ現象に出くわした人がここにはいない、ってことだからここにきても意味ないじゃん
もう返事もらってんだよ、それくらい理解できないの?なさけない
2024/08/18(日) 16:52:26.07ID:GtHdHJ0K0
見本のような基地外だな
2024/08/18(日) 19:24:32.75ID:HTF0RcUb0
こいつは「本物」だぁ
2024/08/18(日) 20:39:07.06ID:zJcx09U/M
いつからか
こんな限界集落のマ板なんかに変なの居着いた
2024/08/19(月) 06:26:30.30ID:SGLtwM6z0
ここはム板
2024/08/19(月) 06:31:58.08ID:QkiVzACw0
>>21
マ板の方はご遠慮いただけますでしょうか
2024/08/19(月) 07:35:48.04ID:I+C1rt+hM
ムやったね……
2024/08/23(金) 20:08:18.72ID:NK40bFjG0
コンソールアプリで画面を上側へスクロールしたときに文字が表示されません
Console.BufferHeightで行数を増やしているのに、何故か反映されない
Win10では正常に表示されたのに、Win11では表示されない
2024/08/25(日) 23:22:26.70ID:bGprUffz0
ググっても出ない中々難しめの質問AIにしたらサンプルコードまで答えてくれやがった
正常動作するかは知らんが
仕様諸々精査してできるかどうかの判断を自動でやってくれるのは楽だわ
2024/08/26(月) 00:14:24.04ID:dB7SOU9G0
回答を検証できる質問でないとハマるよ
それっぽい回答来たから鵜呑みにしてたけど後からハルシネーションだったとわかってガックリ来た
付き合い方を考えないと
2024/09/01(日) 11:24:48.74ID:LL2O7mfa0
vscodeで作成してます。.NETではなく.NET Framework用でコンパイルしたいのですがcsprojをいじればいいんですか?イマイチぐぐっても分かりませんでした…
2024/09/01(日) 13:03:18.55ID:Z5xSjoFS0
ターゲットフレームワークを変更する
おそらくNugetの依存関係が壊滅するのでライブラリのバージョン等を頑張って修正
まあ、そのレベルだと素直にVSでプロジェクト作り直した方が確実に早い
2024/09/02(月) 22:54:25.71ID:h77XuHn20
>>29
依存関係とか変更とかまったく分からないのでnet48でプロジェクトを作りました

しかしc#が勝手に最新で作り出すのでなんとかしないと…
2024/09/02(月) 23:05:06.91ID:h77XuHn20
implicitusingを無効にしたらいけました!
coreCLRの開始イベント使ってねーぞみたいな注意が出ますがとりあえず無視します
2024/09/03(火) 07:44:08.63ID:PDmQOkMO0
だからそんなこともわからんレベルなら
普通のVisualStudio IDE使ってテンプレートから作ってもらえ
.NET Core系用と.NET Framework系用でテンプレート別々にあるぞ
2024/09/03(火) 08:49:37.91ID:4PaG9Ni+0
.NET Frameworkで作るのならVS Codeにこだわる意味が分からんな
2024/09/03(火) 09:54:47.33ID:+c3TQ6I00
初心者ならプロジェクト作成以外もVisual Studio使った方が楽じゃないか
35デフォルトの名無しさん (ワッチョイ 7fad-gXPy)
垢版 |
2024/09/03(火) 10:47:54.65ID:zynfI0Xf0
初心者以外でもvisual studioでいいのでは?
VS Codeって何のためにあるの?
2024/09/03(火) 18:52:22.72ID:tn1VFMYP0
>>35
自由度の高い拡張機能が作成可能とか?
メリットいかせずに「他人と違ったことする俺すげぇ」ってバカのほうが多い気はする
そして拗れてcsc.exeへ。勉強効率も悪くろくなもの作れなくなるバカの末路
ちなみにどっちも初心者スレで「やり方わかりません教えて」みたいな質問者見たことある
37デフォルトの名無しさん (ワッチョイ e7a5-QZ+C)
垢版 |
2024/09/03(火) 20:51:18.41ID:AjfoquOu0
VS CodeはVSがインストール出来ない環境で使うんだよ
2024/09/03(火) 22:16:15.43ID:KfZ8HCC90
maui、xamlとかモリモリ書かないならvscodeで.netは普通にいけると思う。
2024/09/03(火) 22:57:01.51ID:ySKcrG5T0
他のフレワークだとVSCode前提みたいなところがあるから、基本的にコマンド一発でテンプレートやコンフィグ全生成してくれるのが殆どなんだよなー
自分はC#使うのは2〜3割くらいに減ってるから、一旦VSのテンプレートで生成した後にVSCode持ってって作業してる。
別にVSのまま作業しても良いんだけど、他がずっとVSCode使ってるからそのまま殆どなんとなく。
ビルドの設定追い込む時とかはVSに戻って作業する
2024/09/03(火) 23:52:43.04ID:PSfMpKNk0
.NET8に移行しようとしてSystem.Drawing.Commonをnugetで取得して、参照のパッケージのところにもちゃんと入ってるのにビルドするとアセンブリ追加しろやってエラーが出ます
System.Drawing.Commonに限った話じゃないとは思うんですが、nugetしてるはずなのに使えないケースってあります?なんか対処法とかありますかね
nugetのフォルダのsystem.drawing.common.dllを直接追加してみるとエラーが出るし……
2024/09/04(水) 05:59:16.88ID:vTUmaV8z0
依存関係が足りないとか
2024/09/04(水) 08:45:46.87ID:0YyVWJnw0
>>40
ターゲットOSをWindowsにしなきゃだめになったんじゃなかったっけか
2024/09/04(水) 21:50:02.76ID:Gc+g798x0
>>41-42
ありがとうございます。解決しました。
プロジェクトじゃなくて、プロジェクトが参照してるライブラリが古くて画像周りがおかしかったことが原因でした……
いやーてっきりプロジェクトに問題があるものだとばかり。
お手数をおかけして申し訳ありませんでした。
44デフォルトの名無しさん (ワッチョイ 0701-cMiB)
垢版 |
2024/09/05(木) 22:43:12.04ID:IsSxmn+e0
string のなかに " いれたいんだができるん?

string x=""+"aaaa"+"" 
2024/09/05(木) 22:47:08.76ID:oSzSq1tU0
>>44
こういうこと?
string x = "\"+\"aaaa\"+\"";
46デフォルトの名無しさん (ワッチョイ 0701-cMiB)
垢版 |
2024/09/05(木) 23:13:37.12ID:IsSxmn+e0
それでできそうかも。試してみる。
プロセス起動させるとき、引数の変数にパス入れるけどパスの中にスペースがあると
だめなんでそれの回避として " が必要。
47デフォルトの名無しさん (ワッチョイ 0701-cMiB)
垢版 |
2024/09/05(木) 23:26:05.02ID:IsSxmn+e0
だめっぽいな。
aaaaはstring の変数でもってきてる。
2024/09/06(金) 00:01:44.71ID:fMgfL8Dd0
だめっぽいのは君の書き方じゃないか
2024/09/06(金) 00:10:56.19ID:FMgRnbLf0
バックスラッシュの意味理解しよ
2024/09/06(金) 00:19:55.27ID:4rrS/3cJ0
string s = "aaaa";
string x = $"\"{s}\"";
2024/09/06(金) 02:38:09.45ID:kwoFnA2yd
System::Diagnostics::Process::Startとかだろ
"\"" + filePath + "\""
52デフォルトの名無しさん (ワッチョイ 7f11-gXPy)
垢版 |
2024/09/06(金) 03:15:10.46ID:CmuGhD0i0
なんでわざわざ足してんの?
2024/09/06(金) 05:55:59.83ID:c0VNDQG50
Windows君はパスに空白含んでたらバカになるからダブルクォートしないといけないからね

>>44
string x = """aaaa""";

これで
2024/09/06(金) 05:57:26.94ID:c0VNDQG50
>>47を読んで無かったわww
それなら>>51でいいか
55デフォルトの名無しさん (ワッチョイ 0701-cMiB)
垢版 |
2024/09/06(金) 07:11:30.93ID:6dWW3slR0
string x = $"\"{s}\"";
これ採用 TNX!
2024/09/06(金) 08:03:43.33ID:atJH5uZ+0
もうちょっとあれこれ繋げるもんがあるならともかく
たったそれだけにString.Format使う意味ある?
2024/09/06(金) 10:26:55.33ID:q1RifKtNM
2回以上+で結合すると無駄なアロケートとコピーが発生する
ループしないなら気にする必要ないけど、+に拘るメリットも特にないな
2024/09/06(金) 14:31:56.02ID:atJH5uZ+0
なんかふと気になってILSpyしてみたら
>>55程度だと+連結に置き換えられてて、もう一つ変数増やしたらDefaultInterpolatedStringHandler処理になってたわ
2024/09/06(金) 22:02:01.77ID:4rrS/3cJ0
>>58
C#10から実装が変わってかなり高速化したらしい
2024/09/08(日) 14:19:12.90ID:Lcq5kqTI0
https://ufcpp.net/study/csharp/sp_attribute.html

属性付加について質問です
上リンクにバブルソートの途中経過を出力する例がありますが、
/// <summary>
/// SHOW_INTERMEDIATE というシンボルが定義されているときのみ
/// 配列の内容をコンソールに表示する。
/// </summary>
[Conditional("SHOW_INTERMEDIATE")]

がよくわかりません。
このシンボルの定義はどこで誰がするのでしょう?
途中経過を見るかどうかならbool型を渡すだけでできると思うのですが属性を使うメリットは何でしょう?
2024/09/08(日) 16:40:59.79ID:TkJTVSzCH
https://hatsune.hatenablog.jp/entry/2021/12/20/151144

の条件つきコンパイルシンボルに
「SHOW_INTERMEDIATE」も指定して実行したときだけ
IntermediateOutput(array);
が呼ばれる
ソースコードをいじらすともプロジェクト設定だけで動作を切り替えられる
2024/09/08(日) 16:46:45.34ID:TkJTVSzCH
https://ufcpp.net/study/csharp/sp_attribute.html
の例だけなら本来ならConditional属性より#ifで動作を切り替えるほうが自然かもしれないけど、メソッドに属性をつけることで「コンパイル時の」動作を切り替えることもできる
2024/09/08(日) 16:56:39.71ID:0eGKbJyF0
ありがとうございます!
弄って試してみます
2024/09/08(日) 22:39:41.68ID:QA3NbpCiM
#if~#endifだけでこと足りるけど、使いすぎるとコードが見にくくなる。
Conditional属性ならメソッドを呼び出す部分に何も増えないからすっきり。
2024/09/10(火) 18:08:51.32ID:pYXFiK6k0
1年ぶりくらいにC#開発やったらPrismのライセンスが変更されててビックリした
条件があるとはいえ商用で使っていくのは厳しいからどうしようか迷ってる
とりあえずv9.0未満ならMITライセンスのままだから使えないこともないんだけど、このまま使うのもなぁ…
2024/09/10(火) 23:39:42.30ID:FmO9o6ji0
c#がニッチになればなるほど有料ライブラリの存在感が増してきて足元見られてる感はある
MAUIとか、何かググるとsyncfusionのボッタクリライブラリの広告ばっか出てきてめちゃくちゃげんなりする
どうしてこうなった・・・
2024/09/11(水) 10:04:33.53ID:Mwxa/fl+0
c#13来ますね
68デフォルトの名無しさん (スプッッ Sdea-iA/a)
垢版 |
2024/09/11(水) 15:28:02.94ID:NVe6C6lkd
C# Dev Kit がゴミすぎてC#13なんてまともに動くはずもないから無視してOK
https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit&ssr=false#review-details
69デフォルトの名無しさん (スプッッ Sdea-iA/a)
垢版 |
2024/09/11(水) 15:32:38.70ID:NVe6C6lkd
>>66
Visual Studio for macの廃止で
MAUI の無料の開発環境はゴミすぎる VScode + C# Dev Kit しかなくなったからな。
もうお金持ちしか使っていない。
70デフォルトの名無しさん (スプッッ Sdea-iA/a)
垢版 |
2024/09/11(水) 15:34:46.79ID:NVe6C6lkd
MAUI アプリは市場的に iOS 抜きでは考えられず、そうなると「mac上での開発」が大前提なのに
Visual Studio for macが廃止になったからな。
2024/09/11(水) 18:27:03.65ID:XegoQ2KD0
Expressも更新しないしドケチ弊社はvscodeですよ
2024/09/11(水) 21:07:10.19ID:tsOfJ2jSM
c#13の恩恵受けるの利用者の1%以下説
2024/09/12(木) 00:30:07.84ID:tw/IepBM0
結局あと数年は使うデスクトップアプリなら何使えばいいの
2024/09/12(木) 00:57:04.66ID:abJIVzSD0
Forms
2024/09/12(木) 06:52:35.11ID:3diDP2dM0
C#13はあんまり惹かれる内容が無くて……
76デフォルトの名無しさん (ワッチョイ 5d2a-iA/a)
垢版 |
2024/09/12(木) 11:07:15.58ID:0rD/09ib0
結局のところMAUIはAdobe FlashやSilverlightの失敗と同じ道を歩んでしまった。
スマホアプリとデスクトップアプリの統合なんてできるわけないのに。
アップルのMac Catalystも壮大にコケただろ。
2024/09/12(木) 11:29:41.24ID:0D4bKRqg0
いやいや、スマホとデスクトップのフレームワーク統合はReact NativeやFlutterで成功してるよ
MAUIが失敗したのは単にそれらの競合を上回るだけの魅力がなかったから
そもそも当のMS自身がMAUIではなくReact Nativeを主力として採用しているわけで、ドッグフーディングすらまともにやられてない冗談みたいなゴミよ
2024/09/12(木) 15:26:52.97ID:aCcjSW4y0
魅力が無いという消極的な話じゃなくバグがありすぎるんだよ
MAUI使うならMAUI Blazor一択
2024/09/12(木) 17:43:21.90ID:eHy+J5v3d
Flutterで作られたデスクトップアプリってあるの?ないこたないんだろうけど、聞いたことがない
2024/09/12(木) 20:57:36.84ID:XSV6/xEMp
ラムダ式だらけで何やってるか分からん
名前付きならその名前でなんとなくやってる事が推測出来るのに
2024/09/13(金) 00:37:39.75ID:f6FEBSA20
具体的にどんなコード?
触れたことないからどんなもんか気になる
2024/09/13(金) 01:46:12.54ID:2J3jv9tY0
ラムダだとか無名なんたらって引数には名前書かせたりするのがイマイチだよな
全部匿名で書かせろや
2024/09/13(金) 06:49:44.21ID:Xxd/8jpe0
引数に名前無いと式内でどうやってコード書くんだ
2024/09/13(金) 07:04:31.00ID:2PWLnrX2H
最近のC#だと使わない変数/引数は「_」で書けるけどこれのことかな
レスを投稿する