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

■ このスレッドは過去ログ倉庫に格納されています
2024/02/11(日) 09:17:20.44ID:8k78Qd14M
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part159
http://mevius.5ch.net/test/read.cgi/tech/1691454079/
■関連スレ
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
2024/08/16(金) 23:21:57.35ID:h5qIUGqM0
充分簡素では
2024/08/20(火) 14:42:04.36ID:obNwxxTOa
今まできちんと動いてたソースがVS2022をマイナーアップデートしたとたんに
System.Windows.Markup.XamlParseException: 'Index was outside the bounds of the array.'
って例外でて動かなくなった
.NET8.0→9.0に切り替えたら例外出ずに動くし。もう意味が分からない
2024/08/20(火) 16:56:30.17ID:iQgRG7zDp
マイナーアップデートしたからだろ?
2024/08/20(火) 21:31:18.51ID:ef3/wuF/0
どこが配列超えしたのか追っかければ良いのに
2024/08/20(火) 21:49:50.51ID:M48DrufR0
>>564
具体的なバージョンは、17.10.6と17.11.0どっちかな
後者のような奇数番台の.0は比較的大きな変更が入ってバグだらけなことがよくあるから避けた方が無難
2024/08/20(火) 22:53:56.20ID:+NNyvgtIM
バグがあるのにライブラリもバグってて気が付かないと言う線もあるので
どこでどういう風になっているのか見直したほうがいいかも
2024/08/20(火) 23:14:46.66ID:obNwxxTOa
>>566
MainWindowにUserControl貼ってるウインドウなんだけど
UserControlのInitializeComponent();内で例外発生。で、そこのxaml削ってくとある点で例外発生しなくなるけど今度はMainWindowのxamlで例外発生
ってな感じでいっぱい例外出る箇所あって追っかけてもどうしようもなさそうなんだ

>>567
例外出るのはPreview Version 17.12.0 Preview 1.0
アプデ前のは不明
Previewやめろって?w
2024/08/20(火) 23:21:32.92ID:M48DrufR0
>>569
Previewで不具合出たら寧ろご褒美だろうw
勘違いしないようにもっと嬉しそうに書いて
2024/08/21(水) 08:59:40.06ID:u/oKqPM+0
Preview入れて不具合なら報告して次をまとうだろw
それが嫌ならPreviewやめろは当たり前
2024/08/21(水) 09:14:20.66ID:wyAyt1a5M
せやな
573デフォルトの名無しさん (ワッチョイ 1f32-XczR)
垢版 |
2024/08/21(水) 09:52:00.94ID:JYL3albx0
x せやな
o そうですね
2024/08/21(水) 12:11:33.60ID:p/GWU6dG0
せやね
575デフォルトの名無しさん (ワッチョイ 1f32-XczR)
垢版 |
2024/08/21(水) 12:35:04.54ID:JYL3albx0
x せやね
o そうですね
2024/08/21(水) 12:38:55.38ID:mV2UOd5E0
せやせや
577デフォルトの名無しさん (ワッチョイ 1f32-XczR)
垢版 |
2024/08/21(水) 13:40:44.38ID:JYL3albx0
x せやせや
o そうだそうだ
2024/08/21(水) 13:51:19.97ID:u/oKqPM+0
せやろ
579デフォルトの名無しさん (ワッチョイ 1f32-XczR)
垢版 |
2024/08/21(水) 16:14:47.22ID:JYL3albx0
x せやろ
o そうだろ
2024/08/21(水) 16:20:43.88ID:7KXioX+40
なんや(多義語)
2024/08/21(水) 16:41:36.58ID:p/GWU6dG0
せやからなんちゅーねん
582デフォルトの名無しさん (アウアウエー Sa7f-9uNt)
垢版 |
2024/08/22(木) 10:49:22.21ID:IKT838Ooa
しらんがな
2024/08/22(木) 11:03:28.50ID:ePKDMNhB0
しぇからしかっなんばいうとっと
2024/08/26(月) 10:11:56.65ID:6aAxUhl7d
ぼくのC#の基本書は独習C#新版2017年12月初版なんですけど
独習C#は新しい版が2022年7月に出てます
新しいのを買ってもう一度読み直した方がよいのは分かってるのですが、4000円もするので正直買いたくないです。でもネットでまとまった情報を入手してアタマにいれるのも苦手です
そこでみなさんに新しい版を読まない事によるデメリットを力説してもらいたいのです
よろしくおながいします

はいどうぞ
2024/08/26(月) 10:34:41.16ID:CLqHNeyEp
モダンな書き方にこだわらないのなら新しい版は買って読む必要も無いんじゃね?
2024/08/26(月) 10:41:52.10ID:mnXsoUjX0
>>584
初版だとC#7ぐらいだったっけか
他の人とコードを共有するとか他人のコードを読むとかしないのなら別に困らないんじゃね?
C#8以降の新機能って大きいところだと
null許容型
record型
トップレベルステートメント
switch式
とかそのへん?抜けてるのあるかもしれんけど
知ってると便利だけど、知らなくてもそこまで致命的ではないんじゃね?

ようするに、一人でやってるのなら好きにすればいいと思うよ
2024/08/26(月) 10:54:52.78ID:6aAxUhl7d
>>585
>>586
えーそうなんですか
最後の一押ししてもらおうと思ったのですがーw

ありがとうございます
2024/08/27(火) 03:55:59.11ID:4QYKTacR0
仕事で使うなら4000円程度払えないのはおかしい
趣味で使うものに4000円程度払えない奴がこんな専門スレに来るわけがない

ようは、買っちまえ
2024/08/27(火) 06:42:47.99ID:rYVDlmDm0
本なんか買って読んでから考えろ
590デフォルトの名無しさん (ワッチョイ aef9-rgwH)
垢版 |
2024/08/27(火) 10:09:49.52ID:+jtV0Ock0
日曜に本読む国だからな
2024/08/27(火) 10:36:05.57ID:s3ZoKW+e0
初心者なら買う
初心者じゃないなら買わない
2024/08/27(火) 11:10:30.26ID:xQ48+fSa0
初版を買ってから何をしてたんだろ?
買って満足するタイプなら、最新版を買っても読まないだろうから無駄じゃね?
2024/08/27(火) 16:11:14.11ID:bMSylkJep
だいたい分かったら、あとはVisualStudioが教えてくれるだろ
594あぼーん
垢版 |
NGNG
あぼーん
2024/08/28(水) 00:02:03.42ID:+D5QspqkM
図書館にあるかもしれなから図書館のサイト開いて検索してみ
2024/08/28(水) 12:58:34.11ID:J2a/6vGI0
>>584
古い版はブックオフへ売却
597デフォルトの名無しさん (ワッチョイ 5fb0-Z2/Z)
垢版 |
2024/09/02(月) 10:17:07.82ID:UFeMRrS30
MinifyされたJavaScriptのコードをChatGPTで読みやすい形式に戻すことに成功
https://gigazine.net...eering-with-chatgpt/
2024/09/02(月) 10:36:23.94ID:nnLcIwuG0
C#関係ねーだろカス
URLまともに貼ることもできねーのかよカス
2024/09/02(月) 12:39:20.92ID:26NdkCID0
関係ない単発スレ立てるようなやつだからな
600デフォルトの名無しさん (スプッッ Sdea-iA/a)
垢版 |
2024/09/11(水) 15:27:18.98ID:NVe6C6lkd
>>584
C# Dev Kit がゴミすぎてヤバイから古い構文だけ使っとけ
https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit&ssr=false#review-details
2024/09/17(火) 22:53:51.66ID:iKuaAm3Q0
クラス.Hoge
{
getter;
}=new クラス.Fuga

でプロパティの初期化でインスタンス生成して、以降はクラス.Hogeでゲットすることでシングルインスタンスを実現しているコードがあるんですが、シングルトンのほうが良くないですか?
2024/09/17(火) 23:24:30.21ID:glkf3MPlM
何語だ?
2024/09/18(水) 09:46:11.92ID:MaDxf8k20
他でnewできないように作ってあるならどっちでも良いんじゃ?
2024/09/18(水) 19:15:35.43ID:uu54k0bH0
>>601
シングルトンにするとどういうメリットがあるの
2024/09/18(水) 20:03:41.44ID:fZDiODipp
シングルトンって実装概念だから、コードがどうなってようが、スマホただ一つのオブジェクトしか持たないならシングルトンだろ?
2024/09/18(水) 20:04:03.56ID:fZDiODipp
スマホ?
2024/09/18(水) 22:04:49.90ID:b1l1Gl4R0
スマホ
2024/09/18(水) 22:11:32.12ID:KmlEcGUo0
スマガツオ?
2024/09/19(木) 08:40:19.54ID:IN1rmVLY0
カツオじゃないけどスマガツオ
610デフォルトの名無しさん (ワッチョイ 637c-4vSm)
垢版 |
2024/09/28(土) 16:51:21.59ID:ESRfkKDF0
これでもおkなの?

class Hage
{
private static Hage dura= new Hage();

public static Hage Dura => dura == null ? new Dura() : dura;

private Hage(){}
}
2024/09/28(土) 17:41:57.57ID:iFauIOzc0
コンパイラー通してみればよくね
2024/09/28(土) 20:07:55.61ID:VeZQjPSqM
>  dura == null ? new Dura() : dura;
これを見ると3つぐらい気になってしまう
2024/09/28(土) 23:23:29.39ID:Q7+M+blA0
ここ読むといいよ
https://csharpindepth.com/Articles/Singleton#lazy
2024/09/29(日) 06:43:56.42ID:tmQEdRuq0
>>610
そもそも端からreadonlyなduraに代入してるならnullチェックいらなくなるし
そうでなく遅延生成するならdura == null ? (dura = new Dura()) : dura;ってしないとduraは一生nullのままになってしまう
ちなみに最近のC#バージョンなら「public static Hage Dura => dura ??= new Dura();」と簡潔に書ける
2024/09/29(日) 06:51:19.62ID:gD4BAXZc0
それならそもそも「public static Hage Dura { get; } = new Dura();」だけでよくね?
2024/09/29(日) 10:26:30.13ID:BPZDKwn90
>「public static Hage Dura => dura ??= new Dura();」
これはthread-safeではない

>「public static Hage Dura { get; } = new Dura();」
これはthread-safe
他のstaticメンバーにアクセスされてもインスタンス生成されるけどだいたいこれで十分
もっとインスタンス生成を遅延させたければLazy<T>
2024/09/29(日) 10:30:57.16ID:NcBRoyIA0
           |
            |  彡⌒ミ
           \ (´・ω・`)また髪の話してる
             (|   |)::::
              (γ /:::::::
               し \:::
                  \
2024/10/08(火) 20:28:55.31ID:pGkp55Vg0
WPFって例えばComboBoxの色を変更するにしてもテンプレート再定義しなきゃいけないの?
ToggleButton配下のBorderのBackgroundを変更すれば良いだけなのに、そこ変えるためだけに全て再定義し直す他ない?
2024/10/09(水) 17:45:54.17ID:7juExw200
そうだよ
CSSなら楽勝なのに、アホらしいよね
2024/10/09(水) 21:06:07.63ID:UDEl5dNip
WPFはアイテム毎に出来る事が違うから糞、下手するとプロパティ名まで違う
621デフォルトの名無しさん (ワッチョイ 9e60-oLgd)
垢版 |
2024/10/09(水) 23:24:57.23ID:xxcqENzq0
stringになんか不明な文字列が入っているんですが、
EncodingのGetBytesしないでそのままbyte配列にする方法教えてください
2024/10/09(水) 23:27:11.58ID:LpRCWPua0
WPFってそんな糞なのかよ
ゲーミングComboBoxを作りたくなったらどうすんだよ
2024/10/10(木) 01:11:16.37ID:rjsrk2m20
っぱwinformsよ
Datagridviewはなんだかんだ便利
2024/10/10(木) 02:27:50.91ID:6K8bVc+j0
>>621
unsafeでstringのポインタ取れるよ
2024/10/10(木) 08:43:23.64ID:sH/Vhxrv0
unsafeしたくなければ1文字ずつループしながら自前で変換
2024/10/10(木) 12:01:53.19ID:cHKduOPcM
MemoryMarshal.Cast<char,byte>()がunsafe不要かつ効率良い
返値はReadOnlySpanだけど問題ないかと
どうしてもbyte[]が必要ならToArray()
627デフォルトの名無しさん (ワッチョイ 9e60-oLgd)
垢版 |
2024/10/10(木) 13:36:13.58ID:kwV8rurb0
stringを.AsSpan()してReadOnlySpan<char>で受けて
1要素ずつcharの値を確認しました
ありがとうございました
628デフォルトの名無しさん (ワッチョイ 9e60-oLgd)
垢版 |
2024/10/10(木) 13:38:50.81ID:kwV8rurb0
Encodingに「エンコード無し」があってもよさようなもんですけどね
629デフォルトの名無しさん (アウアウエー Sac2-tp1D)
垢版 |
2024/10/10(木) 14:42:09.62ID:bwO1aVtUa
Encoding=Binary
2024/10/10(木) 15:13:38.10ID:sH/Vhxrv0
>>628
Encoding.Default
2024/10/10(木) 15:16:01.18ID:sH/Vhxrv0
あ、でもCoreだとUTF8かあれ
2024/10/11(金) 06:54:42.62ID:HRGXiKw+0
FrameworkではいわゆるANSIだから結局望まれてるものではないと思うな
Encoding.BigEndianUnicodeが一番近いと思うけどこれも無効なサロゲートペアとかあるとU+FFFDに置き換えちゃう

というか今回の用途ならString.Join("-", text.Select(c => ((int)c).ToString("X4")))程度で十分じゃないかな
2024/10/11(金) 19:44:10.29ID:92peWMZ/d
スレチなのかもしれないですけど、お借りします
データベースに接続する際に接続クラスを作るかと思うのですが、問い合わせをする場合、その接続クラスの中でクエリ生成して結果を返すほうがいいのか、接続クラス外でクエリ生成して接続クラスに投げる方がいいのか、どちらが一般的な考えでしょうか?
前者だと、クエリごとにメソッドが増えていって膨大になりそうな感じがし、後者の方が汎用に使えそうな気もしてます
どっちのほうがいいでしょうか?
2024/10/11(金) 21:08:01.94ID:u8Zdo+C50
一般的を聞きたいのか
どちらがいいかを聞きたいののか?

そもそもいいかとは?
2024/10/11(金) 21:29:38.58ID:SASJhP2up
汎用は不正アクセスの入り口になりやすいよな
2024/10/11(金) 22:01:16.41ID:wP/A6+fRM
よくある話だね

リポジトリパターンで実装するときに迷うけど
汎用的で単純なのはリポジトリにメソッドを用意しておく

条件などの複雑なクエリはクエリ実行用のメソッドを作っておくのがバランスが良いと思う
複雑なクエリは値を読むだけで更新は別にしておいた方がいい
2024/10/11(金) 22:04:47.86ID:tH3T8XD80
基本的なクエリは専用メソッドで用意しといて
個別の状況で特殊なクエリはstring引数で渡せるように作るかなぁ
638デフォルトの名無しさん (ワッチョイ dfb1-suLy)
垢版 |
2024/10/11(金) 22:28:42.50ID:f4j5E5960
下記のソースで、2秒経過した時点で、"2秒経過"が表示されて、その後、"終了"が出力されるはずなのですが、
開始した直後に "終了"が出力されて終了します。
どこが悪いのでしょうか?

static async Task Main(string[] args)
{
CancellationTokenSource cts = new CancellationTokenSource();

Task task1 = new Task(async () =>
{
await Task.Delay(5000);
Console.WriteLine("5秒経過");
}, cts.Token);


Task task2 = new Task(async () =>
{
await Task.Delay(2000);
Console.WriteLine("2秒経過");
}, cts.Token);

task1.Start();
task2.Start();

if (await Task.WhenAny(task1, task2) == task2)
{
cts.Cancel();
Console.WriteLine("終了");
}
}
2024/10/11(金) 22:35:31.91ID:l/H5tx0t0
定型的なクエリならメソッド用意して
非定型な任意のクエリをユーザーが構築できるようにするなら
それ用のメソッドを用意しておくしかなくね?
迷うポイントがよくわからん


ところで接続クラスって何なの?
2024/10/11(金) 23:22:23.66ID:wP/A6+fRM
個別に2日以内にログインしたユーザーがどのジャンルにいくら使って…略()みたいなメソッドを作るかどうかって話じゃないのかな?
2024/10/11(金) 23:36:22.38ID:VC+xQYvJ0
>>638
コンストラクタではasync使えない
Task.Runつかえ
そのときはStartはいらない
2024/10/11(金) 23:47:44.62ID:l/H5tx0t0
>>638
async lambda自体がTaskを返すもの
それをnew Taskに渡してwrapしてるので2重になってる
task1やtask2は中身のasync lambdaがTaskを返せば完了
内側のTaskが完了してなくても外側のTaskは完了
2024/10/12(土) 00:51:54.35ID:Om8PnXVB0
>>638
このままAIに聞けばよい
詳しい解説と修正コードも提示してきたぞ!
凄い時代になったもんだ
2024/10/12(土) 01:26:33.92ID:5ioDaTPm0
>>642
ありがとうございます。納得いきました。

>>643
ChatGPTに聞いたら完璧な回答が出ました。
しゅごい・・・
2024/10/12(土) 06:09:41.24ID:PXik+ZL50
>>638がどうダメなのかもわからなかった人間が
どうしてChatGPTが出した回答が完璧だと判断できると言うのか……
2024/10/12(土) 07:08:53.41ID:0WcQlR1j0
>>633
関連キーワード:
・DAO、DTO、Entity
・Prepared Statement
・SQLインジェクション
・O/R Mapper
・モダンなプログラミング言語のライブラリによるDBエンジン毎のSQL文を組み立てる機能
2024/10/12(土) 08:08:10.50ID:0zBJFbu/0
>>645
動かしたんじゃね
2024/10/12(土) 15:03:51.38ID:iNamx5U/0
接続クラスでググったらこういうのが出てきた
https://creatiovitae.hatenadiary.com/entry/2014/09/29/230746
https://www.studio-chips.com/csharp-dbconnection-class-sqlserver/

これ一般的なの?
わざわざ作る意味がよくわからないんだが
2024/10/12(土) 15:11:27.03ID:iNamx5U/0
>>640
ユーザーが自由にクエリを組み立てられるようにするなら
そういうクエリビルダー的なUIと内部の仕組みを自作するか
Power BIみたいなツールを使うかしかないよね

そういう非定型クエリ用の仕組みと定型のクエリ用の仕組みの
コード内の棲み分けで迷うことってあまりないと思うので
クエリを接続クラス内に置くか外から渡すかという質問は
少し違う観点なんじゃないかと想像する
2024/10/12(土) 16:09:44.58ID:jrg98i5j0
一番意味が分からないのは>>648の下のURLの方で
user、password、datasourceは自動実装にしてるくせに
connectionとtransactionは態々別々に書いてでもget&setなとこが意味わからん
クラス内でprivate変数の方にアクセスしてるでもないし
2024/10/12(土) 16:46:37.55ID:4VpnKVlz0
AIに聞け
2024/10/12(土) 18:01:22.51ID:Om8PnXVB0
>>645
求めなくてもダメ出しと理解に必要な技術を解説してくれる

此処で聞く必要はもう全く無くないね
2024/10/12(土) 18:06:57.55ID:hwVWGPYm0
>>644
>>638の内容をそのままChatGPTに投げたら
Task.Runに修正されたコードが返ってきたんだけど
キャンセルの動作はこれで意図通りなの?

Task task1 = Task.Run(async () =>
{
await Task.Delay(5000);
Console.WriteLine("5秒経過");
}, cts.Token);
2024/10/12(土) 18:20:12.74ID:19zRN9Is0
>>648
わざわざ作らないということは、DataGridViewにテーブルデータ表示する時はフォームクラスに全部書いてるの?
2024/10/15(火) 00:50:45.89ID:4VkHlfmU0
Task.Delay()の引数にCancellationTokenを渡さないのは変だな
2024/10/15(火) 09:27:33.35ID:t2D8p6tS0
Cancelに関わらず5秒待機したんじゃろ(鼻ほじ
2024/10/15(火) 09:52:22.92ID:9+lg4UV+p
chatGPTは中身を把握して無いからなぁ
単にネットでよくあるセンテンスを抽出してるだけの無能だしなぁ
658デフォルトの名無しさん (ワッチョイ 4bd8-zljf)
垢版 |
2024/10/15(火) 10:30:05.15ID:d3kL5vb80
ググる前に使うのは有用だよ。
2024/10/15(火) 10:43:30.18ID:2xY7lYacp
>>658
ググった後に使うと、さっき見たサイトの中身を丸まんま言って来るよなw
2024/10/27(日) 19:50:54.89ID:Vdu9Rrcz0
はじめましてC#を初めて2日かもしれないし3日かもしれません
ヴィジュアル系スタジオは持っていませんので
cmdでやってます
がんばります

何か作ってみましたが、もっといいものを作るとすると疲れます
copilotを利用しましたがエラーはきまくります
いいc#の開設サイトあります
なければいいですあればいいです

はじめましてC#をはみでて2日かもしれませんしs・・・
2024/10/27(日) 19:58:48.73ID:oesEgTVZ0
生成AIにはかせた文章か?
2024/10/27(日) 20:38:09.74ID:opEY4juO0
日記?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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