- 1 名前:デフォルトの名無しさん (ワッチョイ f201-IwB9) mailto:sage [2022/11/25(金) 13:16:08.91 ID:HZEumDr50.net]
- !extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512 次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part156 https://mevius.5ch.net/test/read.cgi/tech/1663479569/ ■関連スレ C#, C♯, C#相談室 Part96 https://mevius.5ch.net/test/read.cgi/tech/1639965805/ ■コードを貼る場合は↓を使いましょう。 https://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/ 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 VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 809 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:35:34.01 ID:1pphtrpop.net]
- varで宣言するか、型名で宣言するかの話な
string s; swith(hove) { case 1: s = “one”; break; case 2: s = “two”; 以下略 みたいな時に、 string s;って書くか、var s = “”;みたいに書くか
- 810 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:37:30.50 ID:2htEN4+y0.net]
- そういう事じゃなくてtryの中での何かしらの情報をcatchの中でも使いたいって事なんじゃね
- 811 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:41:55.62 ID:kPCuIbSup.net]
- いや、一連の流れはvarを使うか型名を使うかの話なんだが?
- 812 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:45:14.91 ID:PXNtu1caM.net]
- ダメな例外の使い方
Tekitou a = null; try{ a=適当なメソッド(); } catch(略)| return null;//もしくはエラーコードなんか返したりするw } return a;
- 813 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:59:07.89 ID:PXNtu1caM.net]
- それでメソッドの戻り値がnullかどうか判定してると言う…
必要な場合もあるかもしれないけどよく考えてみて欲しい var a=適当なメソッド(); a.何かする(); return a; でtry-catchは呼び出し元で判定でいいんじゃないかと
- 814 名前:デフォルトの名無しさん (ワッチョイ 6102-wWxq) mailto:sage [2023/02/26(日) 19:01:36.48 ID:uDw5JavV0.net]
- Try系メソッドの存在の否定始まったな
- 815 名前:デフォルトの名無しさん (オイコラミネオ MMad-W5vA) mailto:sage [2023/02/26(日) 19:03:07.43 ID:PXNtu1caM.net]
- 上の初心者は
Tekitou a = null; がtryブロック前に必要だからvarじゃだめだって言ってるんだろ?
- 816 名前:デフォルトの名無しさん (オイコラミネオ MMad-W5vA) mailto:sage [2023/02/26(日) 19:05:15.93 ID:PXNtu1caM.net]
- >>804
違う 上位で捉えたら例外の意味が伝わるのにnull何かにして渡す意味はないよと try-catchの場所を間違えてるよと
- 817 名前:デフォルトの名無しさん (アウアウウー Sa39-hxGH) mailto:sage [2023/02/26(日) 19:08:43.27 ID:6DyDqsNYa.net]
- だから何だ死ね。
- 818 名前:デフォルトの名無しさん (ワッチョイ 6102-wWxq) mailto:sage [2023/02/26(日) 19:09:32.53 ID:uDw5JavV0.net]
- 例外の内容を精査する必要が無いなら、握りつぶす事はあり得る
- 819 名前:デフォルトの名無しさん (オイコラミネオ MMad-W5vA) mailto:sage [2023/02/26(日) 19:20:26.09 ID:PXNtu1caM.net]
- もし対応不能な例外なら
var result=何とかメソッド(); if(result is null) { console.writeline("原因はわからんけど失敗しました"); return ; } ↓こうなったほうがいいんじゃないか?(個人の感想です) try{ var result=何とかメソッド(); } catch(適当) { console.writeline("ファイルがなかった"); } catch(また適当) { console.writeline("ファイルのフォーマットが間違ってた"); }
- 820 名前:デフォルトの名無しさん (アウアウウー Sa39-K1He) mailto:sage [2023/02/26(日) 19:31:21.12 ID:jfiEDsdga.net]
- >>800
初期化してない可能性があるのに使えるわけないじゃん
- 821 名前:デフォルトの名無しさん (ワッチョイ fd79-RFKS) mailto:sage [2023/02/26(日) 22:13:31.77 ID:OE3X2HvJ0.net]
- センスゼロの奴に限って非推奨なことやりたがるってよくわかるな
- 822 名前:デフォルトの名無しさん (ワッチョイ 897c-B+wy) mailto:sage [2023/02/26(日) 22:43:29.16 ID:2htEN4+y0.net]
- >>810
話の流れが分かって無いアホw
- 823 名前:デフォルトの名無しさん (ワッチョイ 6102-wWxq) mailto:sage [2023/02/26(日) 22:48:20.14 ID:uDw5JavV0.net]
- 話が完全に横道に逸れてて草
- 824 名前:デフォルトの名無しさん (ワッチョイ eebc-PJrl) mailto:sage [2023/02/26(日) 22:53:18.80 ID:EH54EPWP0.net]
- 横道という
- 825 名前:ゥ、スレタイも >>1 も読めない奴らに草 []
- [ここ壊れてます]
- 826 名前:デフォルトの名無しさん (ワッチョイ 6d07-K1He) mailto:sage [2023/02/26(日) 23:21:00.54 ID:CTUJHtcQ0.net]
- >>812
話の流れをもうちょい前から読んで見ることだなw
- 827 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 20:12:03.56 ID:Akgqa2X30.net]
- try-catchとか関係なくて
nullに初期化したいときにvarが使えないってだけの話だろ varは型が推論できないとダメなんだからそういうもんだってだけ 変数をnullで初期化することの是非や例外の扱いは別の話
- 828 名前:デフォルトの名無しさん (ワッチョイ fd79-sOXG) mailto:sage [2023/02/27(月) 21:56:17.35 ID:egjSOww/0.net]
- 初心者スレで非推奨のvarの使い方勧めるのやめてくださいね
- 829 名前:デフォルトの名無しさん (オッペケ Sr75-W5vA) mailto:sage [2023/02/27(月) 22:29:07.67 ID:JLUpdfoUr.net]
- どうしてもvarを使ってnullで初期化したいなら、たとえば
var s = (string?)null; でいちおう文法的にはいけるね ローカル変数宣言はすべてvarで統一するようなコーディングスタイルを採用してるなら、 個人的にはちょっと賛同しがたいけど、そういうポリシーということでアリなのかもしれない
- 830 名前:デフォルトの名無しさん (ワッチョイ ae68-ZYAP) mailto:sage [2023/02/27(月) 22:43:14.23 ID:GQlYFKfY0.net]
- Cシャープ滅茶苦茶勉強して知識死ぬほどあるのに
競技用プログラミングではセンスある未経験に負けるのが悔しすぎて泣きたすぎる
- 831 名前:デフォルトの名無しさん (ワッチョイ 6d07-K1He) mailto:sage [2023/02/27(月) 22:52:24.05 ID:IwcHfuRb0.net]
- 言語学者が文学で勝負すんな
- 832 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 07:11:14.63 ID:3WmX3+jc0.net]
- (センスとか言ってる時点で知識量が足りねーんだよ)
- 833 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 14:16:08.99 ID:y7elf6D90.net]
- ufcpp見るとだいたいvar使ってればOKでコードが読みづらくなるならvar以前の問題が何かあると書いてる
まったくもってその通り
- 834 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 17:33:08.16 ID:ovA6LiBhM.net]
- >>822
なんか根拠あるの?
- 835 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 17:50:10.38 ID:qEty2QKoa.net]
- 経験則
- 836 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 17:50:55.08 ID:qEty2QKoa.net]
- ufcppより経験を積んでる自信があるなら論破してこい
- 837 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 19:28:39.24 ID:50ahu/qg0.net]
- そもそもvarは、コードを書く人のための機能であって
コードを読む人のための機能ではないと思うぞ
- 838 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 19:29:40.86 ID:M/injSE6p.net]
- 三文字打てば良い楽々コーディングよな
- 839 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 19:53:22.92 ID:It5dm/K20.net]
- >>825
そこマイクロソフトよりデカい?
- 840 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 20:03:37.91 ID:qEty2QKoa.net]
- だからそう言ってこいよ
- 841 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 20:24:10.06 ID:gde+l/Fdp.net]
- VisualStudioは、 varを使うか型名を使うか、どっちにしても余計なお節介出して来るんだよなぁ
- 842 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 20:36:45.66 ID:0m/LxTGDM.net]
- ツールに振り回されてんの?
人として情けないね
- 843 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 20:44:18.58 ID:kJd3bldF0.net]
- 何言ってんだコイツ。
- 844 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 22:14:36.56 ID:QptBiF/w0.net]
- ただでさえプログラムは面倒くさい事のオンパレードなのに、var位使って行こうぜ
- 845 名前:デフォルトの名無しさん [2023/02/28(火) 23:33:21.23 ID:N7XzWDMw0.net]
- >>822
完全に同意 否定人のコーディング見てみたい
- 846 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 01:34:59.57 ID:VyWbviLu0.net]
- LINQの場合、var書かないわけにもいかないし、その時だけだと統一感が悪い。
- 847 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 07:54:50.21 ID:qaR+V2vd0.net]
- >>835
お前はお前で匿名クラスなんて使ってんじゃねえよ 上位互換のタプルができて何年経つんだ
- 848 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 08:07:51.48 ID:tbGPzE+Ma.net]
- タプルが上位互換とは
- 849 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 08:44:56.23 ID:c5msHDS5a.net]
- varを使ったほうが楽じゃん
- 850 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 09:03:00.15 ID:qaR+V2vd0.net]
- >>837
知らんのか
- 851 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 10:03:28.25 ID:sgVp+QOv0.net]
- Item1とかItem2とか、どれが何のためのデータなのか解らんようなの使う気にならんな……
- 852 名前:デフォルトの名無しさん (アウアウウー Sa39-K1He) mailto:sage [2023/03/01(水) 10:25:21.30 ID:zgl5hYJEa.net]
- >>840
名前つけられるの知らんのか
- 853 名前:デフォルトの名無しさん (ササクッテロル Sp75-BJMC) mailto:sage [2023/03/01(水) 10:28:16.33 ID:NWENc0Hxp.net]
- メソッドの引数のネーミング、考えるの面倒だよな?
- 854 名前:デフォルトの名無しさん (アウアウウー Sa39-K1He) mailto:sage [2023/03/01(水) 10:45:11.60 ID:zgl5hYJEa.net]
- 命名が難しいのはだいたい設計が悪い
ローカル変数ならともかく引数は明確な役割があるはず
- 855 名前:デフォルトの名無しさん (ササクッテロル Sp75-BJMC) mailto:sage [2023/03/01(水) 10:46:22.97 ID:iOTs8eHzp.net]
- >>843
だからそのprivateメソッドの方が尚更面倒なんよ
- 856 名前:デフォルトの名無しさん (アウアウウー Sa39-K1He) mailto:sage [2023/03/01(水) 10:48:50.55 ID:zgl5hYJEa.net]
- だからそれは変な切り出し方をしてるからだよ
- 857 名前:デフォルトの名無しさん (ササクッテロル Sp75-BJMC) mailto:sage [2023/03/01(水) 10:51:27.66 ID:iOTs8eHzp.net]
- ローマ字つづりでいいかなぁ?
- 858 名前:デフォルトの名無しさん (ワッチョイ 05e5-wWxq) mailto:sage [2023/03/01(水) 10:54:17.84 ID:sgVp+QOv0.net]
- >>841
そっちのタプルは構造体やん
- 859 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 11:44:56.01 ID:zgl5hYJEa.net]
- >>847
構造体だからパフォーマンスが高いんだろw
- 860 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 12:27:27.77 ID:sgVp+QOv0.net]
- 俺、パフォーマンスの話なんかしとらんからなぁ
まぁ、ValueTupleも場合によって使うけど、だいたい即値分解してしまうからあんまりメンバ名付けたことないな
- 861 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 12:51:38.98 ID:iHuCndf+a.net]
- >>849
じゃあ構造体で何が悪い?
- 862 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 14:00:57.77 ID:svqy3iKu0.net]
- なんでこの人たちこんなイライラしてるの
- 863 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 15:07:47.34 ID:qaR+V2vd0.net]
- イライラしたやつ出てきたなw
- 864 名前:デフォルトの名無しさん [2023/03/01(水) 17:45:05.94 ID:LI8bJI1D0.net]
- 正規表現で、一致した文字列のうちの一部だけを変更するにはどうすればいいでしょうか。
例えば、 \[.+\|.+\] というパターンでマッチングして、マッチした値の[と|と]を置き換えたいです。 ↓例 入力:[あ|あいうえお] 置換後:<あ-あいうえお> ※[を<に、|を-に、]を>に置き換えています。
- 865 名前:デフォルトの名無しさん [2023/03/01(水) 17:49:47.98 ID:81D5Vj700.net]
- \[(.+)\|(.+)\]
<$1-$2> これくらいハゲでもわかる
- 866 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 17:55:01.04 ID:LI8bJI1D0.net]
- >>854
ありがとうございます!!(>▽<)
- 867 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 19:34:04.22 ID:LQeRVcKu0.net]
- また髪の話してる・・・
- 868 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 01:06:05.40 ID:pwr4e0eZ0.net]
- ModernWPF UIのコンテントダイアログでプログレスダイアログをいい感じにMVVMで実装する方法ないかな?
やりたいこと: これをProgressDialog.xamlで定義してEventAggregatorでイベント飛ばしてプログレスバーとテキストを更新 https://github.com/Kinnara/ModernWpf/wiki/ContentDialog 令和にもなって、IProgressDialogやTaskDialogというか別ウィンドウ出すのはなんかダサいし。
- 869 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 01:40:05.17 ID:W+Au/SFm0.net]
- >>857
WPF(.NET, WinUI) GUIプログラミング Part31 https://mevius.5ch.net/test/read.cgi/tech/1674334396/ ここで質問の方が良くないか?
- 870 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 09:19:55.51 ID:pwr4e0eZ0.net]
- >>858
OK、そっちで質問してみる。 マルチポストになっちゃうが。
- 871 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 09:20:53.64 ID:2uS/Yj6n0.net]
- 誘導されてきた言えば問題ないやろ
- 872 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 09:51:09.87 ID:TSzVcIRer.net]
- >>1にも
>内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 とあるしね
- 873 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 22:44:54.38 ID:MWrxXT5A0.net]
- あるクラスの中に定数やenumを定義したとき、そのクラスのインスタンスを複数個生成したら
全く同じ定義がそれぞれのインスタンスに含まれてしまうのでしょうか? もしそうでも別に実害は無いですが、なんか気持ち悪いです。
- 874 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 22:52:26.87 ID:XS/j5rrj0.net]
- アホw
出来る出来ないの話と 実際にやるやらないは別 気持ち悪いと思うならやならければ良い それがクラス設計ってもんやろ
- 875 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 23:10:17.51 ID:MWrxXT5A0.net]
- >>863
では、862の現象が事実だと仮定して、それを回避するには 例えばCarState列挙型を定義したいときは、Carクラスとは別にクラスを作ってそこに定義するしかないのでしょうか?
- 876 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 23:31:39.37 ID:8JZeKg+Q0.net]
- ただの定義にインスタンスもなにもないよ
気にする必要は無い
- 877 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 00:06:21.53 ID:jHbb3BElM.net]
- >>862
含まれない
- 878 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 00:18:49.48 ID:ebD0iZh90.net]
- >>865
>>866 ありがとうございます。
- 879 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 01:59:20.41 ID:Q+Z0cI/30.net]
- そこらのSEよりC#のコンパイラのほうが何倍も賢い
- 880 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 07:49:42.36 ID:eEJXh7qx0.net]
- >>864
何で列挙型をクラスの中に作るって発想しかないの? CarクラスとCarState列挙型を作るだけやろw アホw
- 881 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 07:56:16.98 ID:ZL6T0NVj0.net]
- >>862
constはクラスの中に入れんとダメだが、enumはclassの中じゃなくても定義できるやで
- 882 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 08:19:17.85 ID:eEJXh7qx0.net]
- 結局は基礎が出来てないだけかw
出来る事が分かってなきゃそうなるわな 特に基礎レベルで分かってなきゃ尚更
- 883 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 08:27:55.53 ID:XuMWIxYS0.net]
- constやenumがビルドしたらどうなるのかとか、classの実体がどうなるのかとか
そういうのちゃんと勉強した方がいいね
- 884 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 08:59:55.66 ID:4pO1EQ6ma.net]
- >>869
それは別にいいだろ 作れるようになってんだから クラスの中に入れちゃいけない縛りだとprivateなenum作りたいときどうすんの
- 885 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:22:43.13 ID:eEJXh7qx0.net]
- >>873
だから“しか”って言ってんだろ
- 886 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:24:43.12 ID:eEJXh7qx0.net]
- こういう文章の意味が分からずに突っ込んで来る連中って本当にプログラム書けてるの?
プログラム“言語”だぞ
- 887 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:25:19.90 ID:4pO1EQ6ma.net]
- >>874
逆になぜそこで「しか」と思っちゃったんだよ
- 888 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:26:42.55 ID:4pO1EQ6ma.net]
- >>875
お前昨日のやつだろ 自分の言葉がどれだけ怪しいか指摘されたことないのか? 煽り抜きで見るからにアスペだぞ 指摘されても自分で否定して忘れてるならこれからは少し聞く耳を持ってみろ
- 889 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:32:14.41 ID:eEJXh7qx0.net]
- 昨日のやつ?
俺はDBのPKフィールドはGUID使えばリスク減るって言ってた奴だよ 別人と勘違いすんじゃねえよ 文言で区別付くだろ これだから無能はw
- 890 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:34:22.04 ID:VNYPZIzLd.net]
- 相手の質問に煽るだけって時点でね…
そもそも質問も答えもまだ理解できてないんじゃないか
- 891 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:39:07.78 ID:HVqlejWD0.net]
- >>878
そっちの無能かw どっちにしろ無能じゃねーかw
- 892 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:47:05.28 ID:eEJXh7qx0.net]
- は?
お前ら全員が無能だって証明されて終わったやんw 何言ってんだ無能w
- 893 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 09:55:22.67 ID:4pO1EQ6ma.net]
- こんな典型的なアスペはなかなかいないな
- 894 名前:デフォルトの名無しさん (ワッチョイ 8b7b-RSMl) mailto:sage [2023/03/05(日) 10:35:18.92 ID:tq7yfQYd0.net]
- >>870
learn.microsoftなど見るとこれが一番適切な回答っぽいな。ただキーワードが分かっているものは自分で検索したほうが質問するよりずっと早い enum https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/enum const https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/const あとNG推奨 ワッチョイ 417c-1tkp アウアウウー Sa1d-/UsF ワッチョイ c907-/UsF
- 895 名前:デフォルトの名無しさん (ワッチョイ c907-/UsF) mailto:sage [2023/03/05(日) 10:38:45.37 ID:HVqlejWD0.net]
- >>883
どこを見て有効だと思ったんだw NG推奨はお前だアスペ
- 896 名前:デフォルトの名無しさん (スップ Sd73-Qpn1) mailto:sage [2023/03/05(日) 11:33:39.09 ID:LimRRCEtd.net]
- 前回は流してたんだがGUIDをキーにするとした場合、
少ない時間で大量にデータが登録される際の並び順ってどうやって保証するのかね (INSERT~SELECTで複数件登録するとか) そういう時は使わないって回答なんだろうか
- 897 名前:デフォルトの名無しさん (ワッチョイ 4110-W5Lg) mailto:sage [2023/03/05(日) 12:11:21.86 ID:V5cM5Nk90.net]
- IDENTITYの自動採番だってそういうの保証はされないんじゃね?
何らかの順序情報が必要ならそれを持たせるようにしないと。
- 898 名前:デフォルトの名無しさん (ブーイモ MMeb-YseW) mailto:sage [2023/03/05(日) 15:46:52.04 ID:CbYCfeUhM.net]
- >>886
一括の複数インサート時の順序は保証されてる 複数テーブルにまたがる複数のトランザクションならインサート順とコミット順が前後する可能性はあるけどインサート順とidentityの大小は基本的に保証されてる 保証されないのはIDENDITY_INSERT OFFのような特殊な使い方をした時だけ ついでに言うとコミット順で完全にソートできるようにするには1つのトランザクションがコミットするまで次のトランザクションを待たせる作りが必要になるので一般的にはやめたほうがいいやり方
- 899 名前:デフォルトの名無しさん (スップ Sd73-Qpn1) mailto:sage [2023/03/05(日) 16:11:18.22 ID:LimRRCEtd.net]
- 普通は1トランザクション内で保証されていればいいと思ってるけど
仕様によっては複数トランザクションでも保証しないとだめなケースもあるとしたらそうかもしれないね スレチだったわすまん
- 900 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 16:34:12.19 ID:wm/Rzcr70.net]
- GUIDはメリットがまったくないわけじゃないが、言うほど強力なものでもない
何しろ彼でさえ理由を具体的に説明できない程度だからね で、問題はユニークであることが完全に保証されないからそれなりのケアが必須だってことだな
- 901 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 16:37:17.48 ID:V5cM5Nk90.net]
- >>887
だから他のトランザクションから見てID列の値が単調増加に見えるのはdirty-readの場合だけじゃん。 一般的なread-commited以上なら最大IDより小さなIDが後から挿入されたように見えることもあるわけで。
- 902 名前:デフォルトの名無しさん [2023/03/05(日) 17:55:09.83 ID:7ksBORrg0.net]
- すまんが、ASP.Net Coreに用意されてる3(4?)つのフレームワークでさあ
ログインページを各言語に対応させるにはどうすればよかんべ? 他の自分で作ったページを多言語化する方法は乗ってるけど、フレームワークで用意されてるログインページ等はどうすんじゃい??? https://learn.microsoft.com/en-us/aspnet/core/blazor/globalization-localization?view=aspnetcore-7.0&pivots=server
- 903 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:35:43.98 ID:Vq0cOu8uM.net]
- >>890
何が「だから」なのかよくわからない 他のトランザクションから見て最大IDより小さなIDが後から挿入されたように見えて何か問題あるの? >>886に書いてある何らかの順序情報を持たせたとしてもコミット順じゃなくインサート順だから全く同じことなんだが?
- 904 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 22:00:17.61 ID:V5cM5Nk90.net]
- >>892
>他のトランザクションから見て最大IDより小さなIDが後から挿入されたように見えて何か問題あるの? そこは外のトランザクションから見た場合に挿入順序とIDの増加順が一致することが保証されないという 事実を書いただけだが。 それで困るかどうかは要件次第。 たとえば定期的な処理で前回の処理以降に追加されたレコードを求めるのに前回のmax(ID)を使うとか、 そういう用途には使えない。
- 905 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 22:13:31.94 ID:V5cM5Nk90.net]
- いや、明示的にテーブルロックとるかrepeatable-read以上で最初にmax(ID)取得してしまえばいいか?
どっちにしろそのへん意識する必要がある。
- 906 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 23:19:20.27 ID:6Aoy6FGpM.net]
- >>894
分離レベルで対応するならシリアライザブルじゃないと防げないんじゃないかな? でも現実的にはテーブルロックやシリアライザブルは同時実行性能を極端に落とすので 挿入日時のようなデータを使って締め前に開始したトランザクションが確実にタイムアウトしてるようなタイミングで締め前に挿入されたデータだけを処理したり 処理ステータスを示すカラムを作って対応する バッチ処理の頻度や重要度やエラー時に必要な対応によって実装を選択することになる
- 907 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 23:30:28.82 ID:wm/Rzcr70.net]
- 結局レコードをトランザクションに書き込むタイミングでIDは発行されるしタイムスタンプもその時間となる
コミットしたタイミングなどDBに記録することは不可能だし一体何を問題にしているのやら
- 908 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 23:41:58.79 ID:NuUQDnR4M.net]
- GUIDとの比較で重要なのは後続のバッチ処理みたいなのがあったときに
IDENTITYの場合はほぼシーケンシャルアクセスで処理できるがGUIDだと完全にランダムアクセスになるので桁違いの遅さになる 外部キーなんかを含めて1ページに収まるレコード数が減るのとランダムアクセスで性能が極端に悪化する場合があるのがGUIDの一番のデメリット NEWSEQUENTIALID()でシーケンシャルなGUIDも作れるけど分散環境でマージが必要な状況でない限りIDENTITYに対するメリットがない 他にはULID使う方法なんかもあるけどやっぱりメリットデメリットがあるので当たり前だけど用途に合わせて使い分けるもの
- 909 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 23:43:48.09 ID:V5cM5Nk90.net]
- >>885の言うような順序の保証は単なるIDENTITY任せじゃダメな場合があるってこと。
|

|