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
207 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 10:54:04.53 ID:Zk03eeCzM.net] 文字列の中の何文字目に日付があるかを調べたいのですが、 日付の書式としては「2023/01/05(木)」といった感じで固定なものの、 日付の数字は当然日によって違ってくるわけなのでContainsだとちょっとうまくいかないです いい方法はないでしょうか
208 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 11:05:52.93 ID:J1J3+QokM.net] 正規表現でググれ
209 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 12:19:31.93 ID:buYHqiH80.net] >>204 static int IndexOfDateString(string str) { const string kDateFormat = "yyyy/MM/dd(ddd)"; int dateLength = kDateFormat.Length - 2; int index = 0; while ((index = str.IndexOf(')', index) + 1) >= dateLength) { int iStart = index - dateLength; Console.Out.WriteLine(str.AsSpan(iStart, dateLength)); if (DateTime.TryParseExact(str.AsSpan(iStart, dateLength), kDateFormat, null, default, out var date)) return iStart; } return -1; }
210 名前:204 mailto:sage [2023/01/06(金) 16:14:10.99 ID:Zk03eeCzM.net] ありがとうございます 参考に(と言うかそのままなのかな?)させてもらいます
211 名前:デフォルトの名無しさん [2023/01/06(金) 16:14:19.23 ID:RU2dEBn00.net] WinフォームアプリでgroupBoxをタブみたいに切り替えて使おうと、 コントローラを切り替えるコードを書いたのですが、groupBoxを重ねて実行したら 全てのgroupBoxが一番下のgroupBoxの子になってるようで、思うように表示されませんでした。 groupBoxを、一番下のgroupBoxの子にしない方法はありますでしょうか?
212 名前:デフォルトの名無しさん (ワッチョイ bb5f-TwI4) mailto:sage [2023/01/06(金) 20:43:15.02 ID:LvtbIuXd0.net] >>208 ・・・.Designer.cs を開くと、自動生成したコードが 一番下のgroupBox.Controls.Add(子のgroupBox) になってないかな? だとしたら、デザインモードから子のgroupBoxをフォームに貼り付けるとき、 フォーム直下じゃなく、一番下のgroupBoxに貼り付けてると思う 自分なら、Load のタイミングで、任意のgroupBox.Controls.Add(任意の孫コントロール) を明示的にコーディングする
213 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 21:39:44.23 ID:buYHqiH80.net] >>207 Console.Out.WriteLine(str.AsSpan(iStart, dateLength)); 確認用のコード消し忘れたからこれは消しといてOK
214 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 22:12:46.01 ID:0EW5INsGM.net] 専ブラでも作るのか?
215 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 22:16:48.35 ID:0EW5INsGM.net] >>200 switch式は左辺参照して型を決める特殊な仕様らしい int→shortに変えられる詳しい仕様は書かれていないので実装依存になるかも
216 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 22:48:27.26 ID:Zd/Zujyt0.net] >>212 Target typed conditional expression とか言うらしく C# 9.0 で仕様が変わったみたい ざっくり読んだけどいまいちよくわからん https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/target-typed-conditional-expression
217 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 23:11:40.08 ID:i+WCiV6p0.net] もう誰もついて行けないほどキモい言語になったな
218 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 23:46:18.49 ID:lAfbhCFR0.net] 20年間建て増し増改築をくり返してるから。。。
219 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 00:03:23.95 ID:14znWkOG0.net] まぁ、あっても使わなきゃいいだけなんじゃね C++のような機能性とJavaのような読みやすさを両立してるってことで
220 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 01:49:54.46 ID:YilgzCe20.net] C#ってUnityのせい(おかげ?)で簡単みたいに言われている気がしなくもないけど まともに使える人は案外少ない印象 そりゃC++とかよりは簡単だろうけど いきなりスラスラ組めるようになった奴はセンスあると思う
221 名前:デフォルトの名無しさん (ワッチョイ 99a7-DWwd) mailto:sage [2023/01/07(土) 10:59:31.87 ID:r7mle/Qh0.net] それはC#に限らずオブジェクト指向全般に言える話 最初は誰でも手続きぐちゃぐちゃプログラミングになるからな
222 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 22:36:09.82 ID:pHfLuIJC0.net] C#の言語仕様を拡張してどんどん便利にしても.NETが旧態依然のままでぜんぜん便利にならないから誰も.NETで開発しようなんて思わないんだよな MSはいい加減.NETそのものやライブラリにお金をかけるべきだわ不便だから誰も使わなくてハウツーやナレッジも少ないからエコシステムが構築されずどんどんC#の人気が落ちてる JS(TS)やPythonが人気なのはスクリプトだからとか簡単だからとかじゃなくて便利で高機能なパッケージ(ライブラリ)が無料で腐るほどあって人気があるからハウツーやナレッジも豊富でエコシステムが構築されてものすごく良い循環してるからなわけよ とりあえずいい加減P/Invokeは廃止してMS自らがラッパー提供しろって話なんよなぜ未だにC#でGlobal HookなんかのOSのAPIにアクセスするのにP/Invokeが必要なのかそもそもこれがおかしいと思わんのかな P/InvokeなんてC/C++理解できんやつには使えるわけがないんだがMAUIとかBlazorとかフロントエンドばかり小手先の改良加えるだけでぜんぜんやる気ないだろそりゃAndroidアプリに頼るしかなくなるわな
223 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 01:34:28.04 ID:TcqU+QzpM.net] その認識は間違ってると思うが…
224 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 02:43:36.44 ID:FOdy7Dic0.net] またランタイムに相当するやつを別にインストールする必要があるのかってところが猛烈にダサいよね 巨大exeの配布とどっちが良いかみたいな時代と逆行した昔話を思い出すよ 結局昔のようにMS主導で強制されるまでは誰も積極的に使わないだろう
225 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 09:40:34.44 ID:TcqU+QzpM.net] C#は実際のアクティブユーザー数は少ない プログラムが趣味ですと言ってる人の中でC#使ってる人の割合が少ないと言う感覚 更にガチ勢の割合が少ない 当初.netのライブラリが充実していた(GUI除く)ので一般人はOSSやサードパーティー製をなかなか使わない風土になってる それで開発が少ないしされてもすぐ放置される jsonライブラリも標準が出てしまった ユーザーはライブラリ開発しないで提供されるのを待つだけ ガチ勢が育たない jsは唯一のwebブラウザ向け言語なのに素では開発しづらいから便利なライブラリが開発され続けてる ライブラリのみでなくjs自体にトランスパイルされる言語が複数開発されてる 一方C#じゃなければ実現できないことはないから積極的に開発されない C#の人気が落ちてると感じるのは相対的に他の言語の魅力が上がってるから と言うより20年使ってたけどC#はホビーユースが中心にもかかわらずMS以外でそんなにC#は重要視されてた時代はない C#は基本的に想定した以外のAPIは放置されてる GlobalHookなどは馬鹿避けで馬鹿に触らせると問題が起こるので機能を提供してないものと思われる
226 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 09:47:03.48 ID:RamX2q3K0.net] ほらMAUI君のキチガイムーブのせいでこんなことになってる
227 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 09:48:03.50 ID:TcqU+QzpM.net] >>219 こいつがMAUI君なのか?
228 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 09:56:44.66 ID:QVI3ZNoXM.net] 騒ぎに便乗している愉快犯だろうが主張が滅茶苦茶
229 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 10:06:02.24 ID:T7l3+Pw00.net] ヤベぇ奴が2連発
230 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 10:09:17.22 ID:TcqU+QzpM.net] C#は外部ライブラリがあまり開発されてない 純正志向が強い js,Pythonなどは区別なく使われてる Rustは標準ライブラリも外部ライブラリ向けに実装部分を差し替えられるように提供されてたりする コミュニティ提供のrust入門書でも外部の乱数ライブラリを使ってる .netは純正主義
231 名前:デフォルトの名無しさん [2023/01/08(日) 10:32:30.16 ID:+xzWagUM0.net] >>227 たしかに.NETの標準ライブラリで何でも出来すぎてOSSが盛んにならないってのはあると思う ただサイシャープの河合社長だったり有用なOSSライブラリを作ってる人はかなりいる みんな知らないだけ
232 名前:デフォルトの名無しさん [2023/01/08(日) 10:34:46.44 ID:+xzWagUM0.net] まさか標準ライブラリの充実がOSSの足枷になってるとはね たしかに言語仕様的にゴミカスなJSやPythonがこんだけOSSで流行ってるって言うのは割と関係あるな
233 名前:デフォルトの名無しさん [2023/01/08(日) 10:56:45.19 ID:cWCXtcgI0.net] 仕事で使うなら標準が充実してる環境の方がいい
234 名前:デフォルトの名無しさん [2023/01/08(日) 11:11:28.09 ID:+xzWagUM0.net] >>230 まぁバージョンが新しい古いとかで動かないとかかなりあるしね Node.jsなんてそんな感じのグチかなり聞くわ Sysmem.Text.JsonもNewtonsoft.Jsonのアプデ頻度が高いからしゃーなしに開発されたものらしい
235 名前:デフォルトの名無しさん (オイコラミネオ MM5d-DSRP) mailto:sage [2023/01/08(日) 14:49:48.54 ID:TcqU+QzpM.net] それに .net standardとかPLCとかの問題で非常にライブラリ開発がつらい時期があった ふざけるなと思ってる人も多かったはず
236 名前:デフォルトの名無しさん [2023/01/08(日) 21:24:57.31 ID:vR0OTCC7d.net] Pythonなんてライブラリのバージョンや本体のバージョンで動かなくなるのでうんざりする
237 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 21:52:10.63 ID:PmW37SD40.net] それはPythonに限らんよReactもFlutterもViteもなんでもそうだ ちゃんとパッケージを管理できてないお前のスキルが低いだけ
238 名前:デフォルトの名無しさん [2023/01/08(日) 22:19:24.54 ID:vR0OTCC7d.net] >>234 そういうレベルじゃない ライブラリ同士の整合性問題がC#の比較じゃない そもそも比較がC#なのに何で他のを持ち出すんだ? 頭悪そう
239 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 22:37:24.96 ID:fqXaATjG0.net] >>235 ここのスレタイ確認しろよ Pythonを例に挙げている時点でお前も頭悪いよ
240 名前:デフォルトの名無しさん [2023/01/08(日) 22:51:16.76 ID:Qur7Wt30M.net] >>235 わかる あれひどいよな ものすごくメジャーライブラリでもPythonのバージョン上がると動かなくなって修正に半年とか普通にかかる リリースされて半年~1年は実質ベータ期間
241 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 00:01:38.16 ID:2yNmR2Eh0.net] 他人に期待しても無駄だから安定してるの使えばいいのよ 俺もC#はpowershellとも連携させるから基本OS標準に入ってるバージョンの機能しか使わないし
242 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 16:28:59.82 ID:CwlhWpkE0.net] ライセンス気にせずにExcel操作ライブラリ使うなら、読み取りはExcelDataReader、書き込みはClosedXMLがいいのかね? EPPlusは商用ライセンス高すぎて使えないわ
243 名前:デフォルトの名無しさん [2023/01/09(月) 17:37:32.83 ID:vMc2E6cN0.net] SpreadsheetLightってのもある あと知ってるかもしれんがEPPlusはv4系までは商用でもフリーだぞ net standard2.0だから今後しばらくは問題ないと思う
244 名前:デフォルトの名無しさん [2023/01/11(水) 11:19:45.11 ID:6xJiw1N1a.net] 単純な真理 馬鹿でも使えるようにすると馬鹿しか使わなくなる
245 名前:デフォルトの名無しさん (ワッチョイ 99a7-DWwd) mailto:sage [2023/01/11(水) 12:26:53.93 ID:mTSuB4YT0.net] >>241 HTML はい論破
246 名前:デフォルトの名無しさん (ササクッテロリ Sp4d-1ccR) mailto:sage [2023/01/11(水) 12:30:24.34 ID:9UsnsdsEp.net] あれ言語? レイアウト用のスクリプトじゃね?
247 名前:デフォルトの名無しさん (ワッチョイ 2bbb-Jp3v) mailto:sage [2023/01/11(水) 12:31:26.63 ID:xxqhJq0+0.net] >>241 5chのことかぁぁぁ!
248 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 00:35:27.24 ID:1+V28XvP0.net] winformsってみんな普通に使ってるし自分も時々使ってるけどこれといったテキスト売ってないよね みんななんとなくで習得してる それでもなんとかなるほど学習コストが低いってことなのかな
249 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 00:39:53.96 ID:Ae6OSc1r0.net] visualstudio使えば、割と簡単とは思うけど GUI的な考えが分からない奴は結局ちょっと複雑になると作れないんだよなぁ UI thread的な考えが理解出来ないとUI thread以外でUI操作しようとしたりするしw
250 名前:デフォルトの名無しさん mailto:sage [2023/01/12(木) 01:42:03.27 ID:9BD/EtRG0.net] >>245 比較対象がWPFなら簡単過ぎるぐらいだな
251 名前:デフォルトの名無しさん [2023/01/13(金) 04:09:28.41 ID:i9/MSi6dM.net] まあアレは直感的にわかりますし…… WPFの方が調べても全然出てこなくて困る、書籍も少ないし
252 名前:デフォルトの名無しさん [2023/01/13(金) 06:37:45.03 ID:CqT5d+dn0.net] @ if ((choice == 2 && player == 2) || (choice == 3 && player == 1)) A if (0 <= xpos && xpos < XMAX && num[xpos] < YMAX) B board[xpos][num[xpos]++] = player; C for (x = 0, y = ypos, n = 0; x < XMAX; x++) D for (x = xpos, y = 0, n = 0; y <= ypos; y++) E for (x = 0, y = ypos - xpos, n = 0; y < YMAX; x++, y++) F for (x = xpos - ypos, y = 0, n = 0; x < XMAX; x++, y++) G for (x = 0, y = xpos + ypos, n = 0; y >= 0; x++, y--) H for (x = xpos + ypos - YMAX + 1, y = YMAX - 1, n = 0; x < XMAX; x++, y--) の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか??
253 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 06:54:01.37 ID:QZjdOIAl0.net] 何がわからんのかわからん 課題なら先生に聞け あーChatGPTなら教えてくれるかもな
254 名前:デフォルトの名無しさん [2023/01/13(金) 09:13:03.94 ID:CqT5d+dn0.net] 例えば@だと、&&が論理積、||が論理和ということだと思うんですけど、演算子が分かってもその条件文内で何が行われているかとかが分からないので知りたい状態なんです。。
255 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 09:19:57.40 ID:ohfi5XtE0.net] ベン図でも描けば?
256 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 09:21:26.34 ID:r1OLO4Qgp.net] マジックナンバーイクナイ
257 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 09:25:11.90 ID:QZjdOIAl0.net] >>251 それなら俺らもそれ以上はわからんぞ 変数名をちゃんと意味あるものにしてやって >>253 が言うようにマジックナンバーをなくすと読めるようになる
258 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 10:43:33.37 ID:g8ppNh/ZM.net] >>249 いますかの答えとしてはいない 書いてるコード断片にはアルゴリズムもなにもない それにこれ多分Cだろ ここは C#と言う別言語のスレなのですれ違い これは多分オセロみたいなゲームのコードだろ 縦ラインループ横ラインループと斜めラインループしてる player1 と player2が対戦して boardが合ってXMAXとYAMXのボード幅ではみ出し判定してる 計算もアルゴリズムも何も感じられない その前にさあIDEの使い方覚えて一行ずつ動かして何が起こってるか見てみたらいい 初心者の間は状態などを紙にでも書かないと多分わからないよ
259 名前:デフォルトの名無しさん [2023/01/13(金) 10:54:17.50 ID:+TkXA4uqa.net] マルチで Google Drive のリンクまで晒してるけど 学校名も個人名もばれるから落第だな 下手したら退学
260 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 11:24:47.04 ID:2CVvZRFNd.net] ちゃんと対象言語のスレで聞いてりゃまだ可愛げがあるけど 他言語やVSCodeのスレとかにまでマルチポストだからげんなりするわ
261 名前:デフォルトの名無しさん (ブーイモ MM4b-mEot) [2023/01/13(金) 11:42:28.12 ID:Qkt7plGTM.net] 半期やってこれがわからないような学生に今どきCを教える大学って終わってるな
262 名前:デフォルトの名無しさん (ワッチョイ b101-tb1I) [2023/01/13(金) 12:02:36.51 ID:CqT5d+dn0.net] >>255 ありがとうございます、スレ違いで申し訳ありません。 >>"これは多分オセロみたいなゲームのコードだろ 縦ラインループ横ラインループと斜めラインループしてる" 例えばどの条件文、関数からこれを読み取れたのですか?
263 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 12:09:39.59 ID:g8ppNh/ZM.net] マルチなのか相手して損した にしてもやる気がない人にはこのレベルはちょっと難しいんだろうなとも思う 二次元配列とボードがイメージとして直結してなくてx、yで盤面の位置を指してることが理解できれば変わるだろうけど
264 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 12:10:56.40 ID:g8ppNh/ZM.net] リロードしてなかったから書き込みが見えてなかったけど スレ違いなのでもうレスしない
265 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 12:11:52.99 ID:w4pCcfcAM.net] わかんない人をわからせるのは 短文投稿サイトでは難儀なので 元々の問題文を貼ってくれれば 正確な回答をもらえると思いま す
266 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 12:13:53.39 ID:g8ppNh/ZM.net] >>262 こら! スレ違いなので答えてはいけないしどうも他のスレでは張ってあるらしし
267 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 12:42:09.38 ID:2CVvZRFNd.net] 5スレマルチポスト 他所でも警告してやって hissi.org/read.php/tech/20230113/Q3FUNWQrZG4w.html hissi.org/read.php/tech/20230113/Q3FUNWQrZG4.html
268 名前:デフォルトの名無しさん (ブーイモ MM4b-IdlF) [2023/01/13(金) 22:44:16.91 ID:UM8Nby1DM.net] データテーブルの列名が日本語になってるデータベースと、C#コードを連携します。 データテーブルのデータを保持するクラスを定義する際、同じようにして日本語を使ってフィールドを定義すれば対応関係がよくわかるのですが、英語やローマ字で定義したほうが良いでしょうか。
269 名前:デフォルトの名無しさん (ワッチョイ b101-fx7m) mailto:sage [2023/01/13(金) 22:59:24.65 ID:QrXHZOLk0.net] 今開発してるのがまさ
270 名前:に日本語カラムばかりなんだけどめっちゃ楽だぞ ソースコード内でもカラムを示す箇所が視覚的にわかりやすいしインテリセンスでも埋もれない カルチャー的に受け付けない人はいるだろうけど使ってみると考えも変わる [] [ここ壊れてます]
271 名前:デフォルトの名無しさん mailto:sage [2023/01/13(金) 23:52:57.11 ID:N2c+mgjH0.net] 過去に行政の税システムのソースを見たら変数名が日本語だった。メーカーのPMに「日本語なんすね」と言ったら「間違いを無くすにはもうこれしかないんです」と言っていた。 税の用語は難しく数が多くて計算は複雑で、もし間違えたら記者会見して新聞記事になる。こういう対象にはそれに適した手段を用いるのが肝要だと思った。
272 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 00:37:39.38 ID:ISrlGbh20.net] nameof使えるし日本語フィールド名で良いんじゃない
273 名前:デフォルトの名無しさん [2023/01/14(土) 03:37:58.98 ID:xHYJkNGt0.net] >>266 レスありがとうございます。 >インテリセンスでも埋もれない インスタンス名に続けて、ドットを打ったらインテリセンスで日本語名フィールドが表示されるのですね。 row_日本語の列名 みたいにしてなにか最初にアルファベットで列名に関与していることを示してみようかと思っています。 フィールドでは無意味かな。 でも、クラス名が日本語の場合は、model_日本語名 みたいな感じで最初にアルファベットをつけておくと、 インスタンス化のときにnewによるコンストラクタの呼び出しが便利かもと思っています。 >>267 たしかに。間違いはなくなりそう。日本語から英語に訳すのに時間がとられるし、それで対応関係がわからなくなってしまったら、 まったく無意味ですよね。 私も、日本語でやってみたいと思います。 >>268 https://atmarkit.itmedia.co.jp/ait/articles/1607/20/news026.html によると、 >nameof演算子を使うと、名前空間/型/メソッド/プロパティ/変数などの単純な名前(=名前空間やクラス名などで修飾されていない名前)の文字列が取得できる。 でも、何の役に立つのかピンとこない。 日本語フィールドとどう関係があるの?
274 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 05:06:37.76 ID:XX64qgVXH.net] ひょっとしていまだにDataTable/DataSetを使ってるとか、生のDataReaderでレコードを取り出して1項目ずつフィールドに転記するつもりなんだろうか EntityFrameworkなりDapperなり使わなきゃだめだよ DapperでSQLを手書きする前提なら、nameofを使ってこんな感じ public class T_テーブル1 { public string カラム1 { get; set; } public string カラム2 { get; set; } public string カラム3 { get; set; } } var sql1 = $"SELECT * FROM {nameof(T_テーブル1)} WHERE {nameof(T_テーブル1.カラム1)}=@val"; T_テーブル1? rec = connection.QueryFirstOrDefault<T_テーブル1>(sql, new { val = "aaa" }); string sql2 = $"INSERT INTO {nameof(T_テーブル1)}" + $"({nameof(T_テーブル1.カラム1)}, {nameof(T_テーブル1.カラム2)},{nameof(T_テーブル1.カラム3)})" + $"VALUES(@{nameof(T_テーブル1.カラム1)}, @{nameof(T_テーブル1.カラム2)}, @{nameof(T_テーブル1.カラム3)})" connection.Execute(sql2, rec); 個人的にはクラス名(テーブル名)・プロパティ名(カラム名)については たとえC#の命名規約に反しようと全角半角・英大文字小文字含めDB定義通りにして SQL文組み立てにフル活用できるようにする
275 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 08:03:33.86 ID:YVgT972+0.net] テーブル1とテーブル2で同じカラム名があるとダルそうですね
276 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 11:14:54.89 ID:1tybvzL1d.net] テーブル名やカラム名そのままならたぶん大丈夫だとは思うけど カッコ系や「・」なんかの全角記号がほとんど使えないのは一応注意を
277 名前:デフォルトの名無しさん (ワッチョイ fd7f-fQuj) [2023/01/14(土) 14:27:07.61 ID:xHYJkNGt0.net] >>270 レスありがとうございます。 お察しの通り、datareaderをforでぐるぐる回しながら、エンティティにデータ格納しようとしています。 ほとんどストアドプロシジャによる処理手順があり、これを実行した結果をC#で扱いたいんです。 ストアドプロシジャがあるのにEFを使う話は書籍にも見られません。 Dapperは全く勉強したことないので全然知りませんでした。 でも、そうやってnameofを使うわけなのですね。 優位性や適応についても知りたくなりました。
278 名前:デフォルトの名無しさん (ワッチョイ fd7f-fQuj) [2023/01/14(土) 14:30:25.35 ID:xHYJkNGt0.net] >>271 同じ名前のフィールドができるからですか? でも異なるタイプのエンティティなら問題ないのかなと思います。 >>272 ありがとうございます。 気をつけます。
279 名前:デフォルトの名無しさん (ワッチョイ fd7f-fQuj) [2023/01/14(土) 14:40:51.64 ID:xHYJkNGt0.net] >>273 >でも、そうやってnameofを使うわけなのですね。 文字列内(今回はSQL文)に、クラスのフィールド名を組み込みたいときに使うと良いということがよくわかりました。 すると、その場合、クラス名、フィールド名は、データベースの列名に一致させておくことが必須ですね。 どうもありがとうございます。
280 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 21:37:09.12 ID:JGEy8Mb7H.net] ちょっとまって、フィールド名とカラム名を一致させるのはnameofのためじゃなくて EFやDapperでもって取得したレコードや更新値を全レコード/全カラム自動マッピングさせるためだよ いまどき手動でDataReaderから1項目ずつ値転記したりDbCommand/DbParameterをいちいち指定したりなんて もはや許されない前時代的老害コーディングだからやっちゃだめ あとEFでのストアド実行ならふつうにSqlQuery()とかの生クエリで出来ると思う
281 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 23:34:32.45 ID:v+aDVA7Ga.net] SQL 文を組み立てるのは、数十年前のやり方 Ruby on Rails では、1対1・1対多・多対多など、表同士の関連を定義する
282 名前:デフォルトの名無しさん (ワッチョイ cd35-5Koo) mailto:sage [2023/01/15(日) 00:10:03.35 ID:GqZOBUMQ0.net] HttpClientでPostAsyncするときにユーザーエージェントを指定したい時はDefaultHeadersをいじるしかないのでしょうか。 それをするとマルチスレッドで同時に別のユーザーエージェントで送りたいときに独自で排他制御しないといけない気がします。 かと言ってSendAsyncを使うと今度はContent-Typeをapplication/x-www-form-urlencodedにしたくても勝手に後ろに文字コードの;uft-8などが付いてきて困っています。
283 名前:デフォルトの名無しさん (ワッチョイ cd35-5Koo) mailto:sage [2023/01/15(日) 00:11:09.01 ID:GqZOBUMQ0.net] 記載し忘れましたがHttpClientはひとつのオブジェクトを用意して同時に使います。
284 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 00:44:00.15 ID:pBiKKGenM.net] WebRequest、WebClient、ServicePoint は廃止されている [アーティクル] 2023/01/05 https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/networking/6.0/webrequest-deprecated > WebRequest、WebClient、ServicePoint の各クラスは古い形式としてマークされており、コンパイル時に SYSLIB0014 警告が生成されます。
285 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 00:45:46.03 ID:pBiKKGenM.net] 勘違いして全然違うのを投入した
286 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 00:56:53.85 ID:AxXMsEIz0.net] FormUrlEncodedContentを持ったHttpRequestMessageをSendAsyncでPOSTしても Content-Type: application/x-www-form-urlencoded だけだったけど .NET7, .NET Fx 4.8両方で
287 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 01:00:32.76 ID:GqZOBUMQ0.net] すみません、また記載し忘れていましたがFormUrlEncodedConentを使用すると文字コードをShiftJISにしたいのですができず困っています。 あとはまだ試してしないのですがスペースが%20になってしまうとのことでそちらについても都合が悪いです。
288 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 01:01:36.57 ID:GqZOBUMQ0.net] %20ではなく+です
289 名前:デフォルトの名無しさん [2023/01/15(日) 01:08:45.78 ID:GqZOBUMQ0.net] HttpContentというクラスを独自にはせいさせるとできるかもしれないです 明日ためしてみます
290 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 01:18:15.52 ID:AxXMsEIz0.net] https://stackoverflow.com/questions/12390511/httpclient-formurlencodedcontent-encoding HttpContentから派生じゃなくてByteArrayContentを直に使えばいいらしいよ
291 名前:デフォルトの名無しさん [2023/01/15(日) 01:20:48.86 ID:GqZOBUMQ0.net] ByteArrayも試したのですが何かしらの問題があったような気が… すみません、明日さいど確認してみます
292 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 01:23:56.33 ID:R4vpna1L0.net] 仕事かな
293 名前:デフォルトの名無しさん (オイコラミネオ MMe5-7DGa) mailto:sage [2023/01/15(日) 01:41:17.79 ID:pBiKKGenM.net] HttpClientのサードパーティー製をNugetで探すと上位の方にかなりパンチの効いたのが出てくる
294 名前:デフォルトの名無しさん [2023/01/15(日) 02:02:46.64 ID:C2q54ZnWd.net] >>277 業務を知らないRuby馬鹿
295 名前:デフォルトの名無しさん [2023/01/15(日) 05:17:18.02 ID:14wHoUoo0.net] >>276 ありがとうございます。 EFもかなり発展しているということなのですね。 以前はまだ未完成みたいな感じだったので、利用を躊躇しておりました。 ストアドの実行もEFでやってみたいと思います。 ただEFについては勉強が必要なので、少し時間がかかりそうです。 DataReaderはVBのときからやっているので、やっぱりいじり方がわかりやすいんですね。 >>277 表同士の結合は、ストアドプロシージャでやっては今の時代はダメなんですかね。
296 名前:デフォルトの名無しさん [2023/01/15(日) 05:21:23.11 ID:14wHoUoo0.net] >>291 いちおう、ドメイン駆動設計なども学びはしました。 リポジトリ、モデル、アプリケーション、プレゼンに分けて構築しています。 でも、効率が良さそうなのはわかりますが、EFとかはどうも苦手意識があって。 いつか、慣れていく必要がありそうだとは思っています。
297 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 05:25:16.63 ID:I1C/y1wm0.net] DB畑なら特定の環境に依存する中途半端なことするより普通にSQL文使うのを選ぶと思うけど
298 名前:277 mailto:sage [2023/01/15(日) 05:54:23.73 ID:r5uLxMWea.net] Ruby on Rails では、各データベース(DB)の方言に依存しないように、 O/R マッパーで、3大DB のSQLite, PostgreSQL, MySQL を使う 多くはPostgreSQLだから、AWS Aurora とも互換性ある O/R マッパーを使わないと、各列の型も異なる
299 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 09:53:02.70 ID:BFqmBeHGd.net] >>291 いきなりRailsを持ち出す奴は構ってはいけない この板の鉄則
300 名前:デフォルトの名無しさん [2023/01/15(日) 11:50:48.71 ID:AgwxnFRxM.net] >>292 リポジトリのインターフェースがきちんと定義されててDBの実装に依存する部分が全てリポジトリの実装クラス側に隠蔽されてるなら中身は好きにすりゃ良い 後でリファクタリングするのも大した手間じゃない リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装は依存性を分離できてないから基本的には良くない設計 (良くない設計だけど開発効率を重視して採用することはある)
301 名前:デフォルトの名無しさん [2023/01/15(日) 13:38:07.36 ID:GqZOBUMQ0.net] ByteArrayContentの件ですが、ほかのヘッダーと同様にHttpRequestMessage.Headers プロパティでContent-Typeを設定していましたが、これではContent-Typeだけリクエスト文に現れませんでした。 しかし、ByteArrayContentのHttpContentHeaders.ContentType プロパティに設定することで無事、目的のContent-Typeが送信されるようになりました。 ご協力ありがとうございました。
302 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 17:02:40.66 ID:pBiKKGenM.net] おもしろhttpclient代替ライブラリの出番はなかったと 残念
303 名前:デフォルトの名無しさん [2023/01/15(日) 17:03:22.46 ID:i8CV0envM.net] >>296 >リポジトリのインターフェースがきちんと定義されてて データベースなどの入れ替えに対応させるためですね。 >リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装 これはいまいちピンとこないです。 どういう問題を持っているのですか。
304 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 17:27:16.78 ID:pBiKKGenM.net] 動かない時点で問題だろ 依存を切ってるはずなのに
305 名前:デフォルトの名無しさん (ブーイモ MMde-fQuj) [2023/01/15(日) 18:01:55.48 ID:i8CV0envM.net] >>299 について、>>300 さんへ 言い方がまずかったです。 >リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装 これがどういう実装になってるのかなと。 リポジトリから返される型とは、モデルクラスでしょう。エンティティのことだと思います。 この型の名前を変えるとは、モデルクラスの名を変えるということですかね。 単純にかんがえると、コンパイル段階でエラーになると思います。 SQL文も動かなくなるとは、リポジトリがエンティティを受け入れる段階をいうのかな。 でも、リポジトリの永続化メソッドの引数の型と、エンティティの型が合わないという話なら、やはりコンパイルでエラーになる。 こういう話ではないのかな?
306 名前:デフォルトの名無しさん (ブーイモ MMde-laSj) [2023/01/15(日) 18:44:05.72 ID:Tpvfm3sDM.net] >>299 ここにEF使ったリポジトリとSqlCommandやDataReaderを使ったリポジトリの両方を実装してるサンプルであるから見てみるといい https://www.shoeisha.co.jp/book/download/9784798150727/detail >>270 が動かなくなる実装の一例
307 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 19:07:02.30 ID:pBiKKGenM.net] >>301 なんで段落じゃなくて毎回改行してんの?