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

■ このスレッドは過去ログ倉庫に格納されています
2022/11/25(金) 13:16:08.91ID:HZEumDr50
!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
2023/01/06(金) 22:48:27.26ID:Zd/Zujyt0
>>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
2023/01/06(金) 23:11:40.08ID:i+WCiV6p0
もう誰もついて行けないほどキモい言語になったな
2023/01/06(金) 23:46:18.49ID:lAfbhCFR0
20年間建て増し増改築をくり返してるから。。。
2023/01/07(土) 00:03:23.95ID:14znWkOG0
まぁ、あっても使わなきゃいいだけなんじゃね
C++のような機能性とJavaのような読みやすさを両立してるってことで
2023/01/07(土) 01:49:54.46ID:YilgzCe20
C#ってUnityのせい(おかげ?)で簡単みたいに言われている気がしなくもないけど
まともに使える人は案外少ない印象

そりゃC++とかよりは簡単だろうけど
いきなりスラスラ組めるようになった奴はセンスあると思う
2023/01/07(土) 10:59:31.87ID:r7mle/Qh0
それはC#に限らずオブジェクト指向全般に言える話
最初は誰でも手続きぐちゃぐちゃプログラミングになるからな
2023/01/07(土) 22:36:09.82ID:pHfLuIJC0
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アプリに頼るしかなくなるわな
2023/01/08(日) 01:34:28.04ID:TcqU+QzpM
その認識は間違ってると思うが…
2023/01/08(日) 02:43:36.44ID:FOdy7Dic0
またランタイムに相当するやつを別にインストールする必要があるのかってところが猛烈にダサいよね
巨大exeの配布とどっちが良いかみたいな時代と逆行した昔話を思い出すよ
結局昔のようにMS主導で強制されるまでは誰も積極的に使わないだろう
2023/01/08(日) 09:40:34.44ID:TcqU+QzpM
C#は実際のアクティブユーザー数は少ない
プログラムが趣味ですと言ってる人の中でC#使ってる人の割合が少ないと言う感覚
更にガチ勢の割合が少ない

当初.netのライブラリが充実していた(GUI除く)ので一般人はOSSやサードパーティー製をなかなか使わない風土になってる
それで開発が少ないしされてもすぐ放置される
jsonライブラリも標準が出てしまった
ユーザーはライブラリ開発しないで提供されるのを待つだけ
ガチ勢が育たない

jsは唯一のwebブラウザ向け言語なのに素では開発しづらいから便利なライブラリが開発され続けてる
ライブラリのみでなくjs自体にトランスパイルされる言語が複数開発されてる

一方C#じゃなければ実現できないことはないから積極的に開発されない

C#の人気が落ちてると感じるのは相対的に他の言語の魅力が上がってるから
と言うより20年使ってたけどC#はホビーユースが中心にもかかわらずMS以外でそんなにC#は重要視されてた時代はない

C#は基本的に想定した以外のAPIは放置されてる
GlobalHookなどは馬鹿避けで馬鹿に触らせると問題が起こるので機能を提供してないものと思われる
2023/01/08(日) 09:47:03.48ID:RamX2q3K0
ほらMAUI君のキチガイムーブのせいでこんなことになってる
2023/01/08(日) 09:48:03.50ID:TcqU+QzpM
>>219
こいつがMAUI君なのか?
2023/01/08(日) 09:56:44.66ID:QVI3ZNoXM
騒ぎに便乗している愉快犯だろうが主張が滅茶苦茶
2023/01/08(日) 10:06:02.24ID:T7l3+Pw00
ヤベぇ奴が2連発
2023/01/08(日) 10:09:17.22ID:TcqU+QzpM
C#は外部ライブラリがあまり開発されてない
純正志向が強い

js,Pythonなどは区別なく使われてる
Rustは標準ライブラリも外部ライブラリ向けに実装部分を差し替えられるように提供されてたりする
コミュニティ提供のrust入門書でも外部の乱数ライブラリを使ってる

.netは純正主義
228デフォルトの名無しさん (ワッチョイ 9301-GR7q)
垢版 |
2023/01/08(日) 10:32:30.16ID:+xzWagUM0
>>227
たしかに.NETの標準ライブラリで何でも出来すぎてOSSが盛んにならないってのはあると思う
ただサイシャープの河合社長だったり有用なOSSライブラリを作ってる人はかなりいる
みんな知らないだけ
229デフォルトの名無しさん (ワッチョイ 9301-GR7q)
垢版 |
2023/01/08(日) 10:34:46.44ID:+xzWagUM0
まさか標準ライブラリの充実がOSSの足枷になってるとはね
たしかに言語仕様的にゴミカスなJSやPythonがこんだけOSSで流行ってるって言うのは割と関係あるな
230デフォルトの名無しさん (ワッチョイ 93ad-U0xt)
垢版 |
2023/01/08(日) 10:56:45.19ID:cWCXtcgI0
仕事で使うなら標準が充実してる環境の方がいい
231デフォルトの名無しさん (ワッチョイ 9301-GR7q)
垢版 |
2023/01/08(日) 11:11:28.09ID:+xzWagUM0
>>230
まぁバージョンが新しい古いとかで動かないとかかなりあるしね
Node.jsなんてそんな感じのグチかなり聞くわ
Sysmem.Text.JsonもNewtonsoft.Jsonのアプデ頻度が高いからしゃーなしに開発されたものらしい
2023/01/08(日) 14:49:48.54ID:TcqU+QzpM
それに .net standardとかPLCとかの問題で非常にライブラリ開発がつらい時期があった
ふざけるなと思ってる人も多かったはず
233デフォルトの名無しさん (スッップ Sdb3-kOMB)
垢版 |
2023/01/08(日) 21:24:57.31ID:vR0OTCC7d
Pythonなんてライブラリのバージョンや本体のバージョンで動かなくなるのでうんざりする
2023/01/08(日) 21:52:10.63ID:PmW37SD40
それはPythonに限らんよReactもFlutterもViteもなんでもそうだ
ちゃんとパッケージを管理できてないお前のスキルが低いだけ
235デフォルトの名無しさん (スッップ Sdb3-kOMB)
垢版 |
2023/01/08(日) 22:19:24.54ID:vR0OTCC7d
>>234
そういうレベルじゃない
ライブラリ同士の整合性問題がC#の比較じゃない
そもそも比較がC#なのに何で他のを持ち出すんだ?
頭悪そう
2023/01/08(日) 22:37:24.96ID:fqXaATjG0
>>235
ここのスレタイ確認しろよ
Pythonを例に挙げている時点でお前も頭悪いよ
237デフォルトの名無しさん (ブーイモ MM35-mEot)
垢版 |
2023/01/08(日) 22:51:16.76ID:Qur7Wt30M
>>235
わかる
あれひどいよな
ものすごくメジャーライブラリでもPythonのバージョン上がると動かなくなって修正に半年とか普通にかかる
リリースされて半年~1年は実質ベータ期間
2023/01/09(月) 00:01:38.16ID:2yNmR2Eh0
他人に期待しても無駄だから安定してるの使えばいいのよ
俺もC#はpowershellとも連携させるから基本OS標準に入ってるバージョンの機能しか使わないし
2023/01/09(月) 16:28:59.82ID:CwlhWpkE0
ライセンス気にせずにExcel操作ライブラリ使うなら、読み取りはExcelDataReader、書き込みはClosedXMLがいいのかね?
EPPlusは商用ライセンス高すぎて使えないわ
240デフォルトの名無しさん (ワッチョイ 515f-DWwd)
垢版 |
2023/01/09(月) 17:37:32.83ID:vMc2E6cN0
SpreadsheetLightってのもある
あと知ってるかもしれんがEPPlusはv4系までは商用でもフリーだぞ
net standard2.0だから今後しばらくは問題ないと思う
241デフォルトの名無しさん (アウアウウー Sa85-DH5p)
垢版 |
2023/01/11(水) 11:19:45.11ID:6xJiw1N1a
単純な真理
馬鹿でも使えるようにすると馬鹿しか使わなくなる
2023/01/11(水) 12:26:53.93ID:mTSuB4YT0
>>241
HTML
はい論破
2023/01/11(水) 12:30:24.34ID:9UsnsdsEp
あれ言語?
レイアウト用のスクリプトじゃね?
2023/01/11(水) 12:31:26.63ID:xxqhJq0+0
>>241
5chのことかぁぁぁ!
2023/01/12(木) 00:35:27.24ID:1+V28XvP0
winformsってみんな普通に使ってるし自分も時々使ってるけどこれといったテキスト売ってないよね
みんななんとなくで習得してる
それでもなんとかなるほど学習コストが低いってことなのかな
2023/01/12(木) 00:39:53.96ID:Ae6OSc1r0
visualstudio使えば、割と簡単とは思うけど
GUI的な考えが分からない奴は結局ちょっと複雑になると作れないんだよなぁ
UI thread的な考えが理解出来ないとUI thread以外でUI操作しようとしたりするしw
2023/01/12(木) 01:42:03.27ID:9BD/EtRG0
>>245
比較対象がWPFなら簡単過ぎるぐらいだな
248デフォルトの名無しさん (テテンテンテン MM4b-JmZ8)
垢版 |
2023/01/13(金) 04:09:28.41ID:i9/MSi6dM
まあアレは直感的にわかりますし……
WPFの方が調べても全然出てこなくて困る、書籍も少ないし
249デフォルトの名無しさん (ワッチョイ b101-tb1I)
垢版 |
2023/01/13(金) 06:37:45.03ID:CqT5d+dn0
@ 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--)
の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか??
2023/01/13(金) 06:54:01.37ID:QZjdOIAl0
何がわからんのかわからん
課題なら先生に聞け

あーChatGPTなら教えてくれるかもな
251デフォルトの名無しさん (ワッチョイ b101-tb1I)
垢版 |
2023/01/13(金) 09:13:03.94ID:CqT5d+dn0
例えば@だと、&&が論理積、||が論理和ということだと思うんですけど、演算子が分かってもその条件文内で何が行われているかとかが分からないので知りたい状態なんです。。
2023/01/13(金) 09:19:57.40ID:ohfi5XtE0
ベン図でも描けば?
2023/01/13(金) 09:21:26.34ID:r1OLO4Qgp
マジックナンバーイクナイ
2023/01/13(金) 09:25:11.90ID:QZjdOIAl0
>>251
それなら俺らもそれ以上はわからんぞ
変数名をちゃんと意味あるものにしてやって >>253 が言うようにマジックナンバーをなくすと読めるようになる
2023/01/13(金) 10:43:33.37ID:g8ppNh/ZM
>>249
いますかの答えとしてはいない
書いてるコード断片にはアルゴリズムもなにもない
それにこれ多分Cだろ
ここは C#と言う別言語のスレなのですれ違い

これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる

player1 と player2が対戦して boardが合ってXMAXとYAMXのボード幅ではみ出し判定してる
計算もアルゴリズムも何も感じられない

その前にさあIDEの使い方覚えて一行ずつ動かして何が起こってるか見てみたらいい
初心者の間は状態などを紙にでも書かないと多分わからないよ
256デフォルトの名無しさん (アウアウウー Sa85-DH5p)
垢版 |
2023/01/13(金) 10:54:17.50ID:+TkXA4uqa
マルチで Google Drive のリンクまで晒してるけど
学校名も個人名もばれるから落第だな
下手したら退学
2023/01/13(金) 11:24:47.04ID:2CVvZRFNd
ちゃんと対象言語のスレで聞いてりゃまだ可愛げがあるけど
他言語やVSCodeのスレとかにまでマルチポストだからげんなりするわ
258デフォルトの名無しさん (ブーイモ MM4b-mEot)
垢版 |
2023/01/13(金) 11:42:28.12ID:Qkt7plGTM
半期やってこれがわからないような学生に今どきCを教える大学って終わってるな
259デフォルトの名無しさん (ワッチョイ b101-tb1I)
垢版 |
2023/01/13(金) 12:02:36.51ID:CqT5d+dn0
>>255
ありがとうございます、スレ違いで申し訳ありません。
>>"これは多分オセロみたいなゲームのコードだろ
縦ラインループ横ラインループと斜めラインループしてる"
例えばどの条件文、関数からこれを読み取れたのですか?
2023/01/13(金) 12:09:39.59ID:g8ppNh/ZM
マルチなのか相手して損した
にしてもやる気がない人にはこのレベルはちょっと難しいんだろうなとも思う

二次元配列とボードがイメージとして直結してなくてx、yで盤面の位置を指してることが理解できれば変わるだろうけど
2023/01/13(金) 12:10:56.40ID:g8ppNh/ZM
リロードしてなかったから書き込みが見えてなかったけど
スレ違いなのでもうレスしない
2023/01/13(金) 12:11:52.99ID:w4pCcfcAM
わかんない人をわからせるのは
短文投稿サイトでは難儀なので
元々の問題文を貼ってくれれば
正確な回答をもらえると思いま
2023/01/13(金) 12:13:53.39ID:g8ppNh/ZM
>>262
こら!

スレ違いなので答えてはいけないしどうも他のスレでは張ってあるらしし
2023/01/13(金) 12:42:09.38ID:2CVvZRFNd
5スレマルチポスト
他所でも警告してやって
http://hissi.org/read.php/tech/20230113/Q3FUNWQrZG4w.html
http://hissi.org/read.php/tech/20230113/Q3FUNWQrZG4.html
265デフォルトの名無しさん (ブーイモ MM4b-IdlF)
垢版 |
2023/01/13(金) 22:44:16.91ID:UM8Nby1DM
データテーブルの列名が日本語になってるデータベースと、C#コードを連携します。

データテーブルのデータを保持するクラスを定義する際、同じようにして日本語を使ってフィールドを定義すれば対応関係がよくわかるのですが、英語やローマ字で定義したほうが良いでしょうか。
2023/01/13(金) 22:59:24.65ID:QrXHZOLk0
今開発してるのがまさに日本語カラムばかりなんだけどめっちゃ楽だぞ
ソースコード内でもカラムを示す箇所が視覚的にわかりやすいしインテリセンスでも埋もれない

カルチャー的に受け付けない人はいるだろうけど使ってみると考えも変わる
2023/01/13(金) 23:52:57.11ID:N2c+mgjH0
過去に行政の税システムのソースを見たら変数名が日本語だった。メーカーのPMに「日本語なんすね」と言ったら「間違いを無くすにはもうこれしかないんです」と言っていた。
税の用語は難しく数が多くて計算は複雑で、もし間違えたら記者会見して新聞記事になる。こういう対象にはそれに適した手段を用いるのが肝要だと思った。
2023/01/14(土) 00:37:39.38ID:ISrlGbh20
nameof使えるし日本語フィールド名で良いんじゃない
269デフォルトの名無しさん (ワッチョイ fd7f-PB+X)
垢版 |
2023/01/14(土) 03:37:58.98ID:xHYJkNGt0
>>266
レスありがとうございます。

>インテリセンスでも埋もれない
インスタンス名に続けて、ドットを打ったらインテリセンスで日本語名フィールドが表示されるのですね。

row_日本語の列名 みたいにしてなにか最初にアルファベットで列名に関与していることを示してみようかと思っています。
フィールドでは無意味かな。
でも、クラス名が日本語の場合は、model_日本語名 みたいな感じで最初にアルファベットをつけておくと、
インスタンス化のときにnewによるコンストラクタの呼び出しが便利かもと思っています。

>>267
たしかに。間違いはなくなりそう。日本語から英語に訳すのに時間がとられるし、それで対応関係がわからなくなってしまったら、
まったく無意味ですよね。
私も、日本語でやってみたいと思います。

>>268
https://atmarkit.itmedia.co.jp/ait/articles/1607/20/news026.html によると、
>nameof演算子を使うと、名前空間/型/メソッド/プロパティ/変数などの単純な名前(=名前空間やクラス名などで修飾されていない名前)の文字列が取得できる。

でも、何の役に立つのかピンとこない。
日本語フィールドとどう関係があるの?
2023/01/14(土) 05:06:37.76ID:XX64qgVXH
ひょっとしていまだに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文組み立てにフル活用できるようにする
2023/01/14(土) 08:03:33.86ID:YVgT972+0
テーブル1とテーブル2で同じカラム名があるとダルそうですね
2023/01/14(土) 11:14:54.89ID:1tybvzL1d
テーブル名やカラム名そのままならたぶん大丈夫だとは思うけど
カッコ系や「・」なんかの全角記号がほとんど使えないのは一応注意を
273デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
垢版 |
2023/01/14(土) 14:27:07.61ID:xHYJkNGt0
>>270
レスありがとうございます。
お察しの通り、datareaderをforでぐるぐる回しながら、エンティティにデータ格納しようとしています。
ほとんどストアドプロシジャによる処理手順があり、これを実行した結果をC#で扱いたいんです。
ストアドプロシジャがあるのにEFを使う話は書籍にも見られません。

Dapperは全く勉強したことないので全然知りませんでした。
でも、そうやってnameofを使うわけなのですね。
優位性や適応についても知りたくなりました。
274デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
垢版 |
2023/01/14(土) 14:30:25.35ID:xHYJkNGt0
>>271
同じ名前のフィールドができるからですか?
でも異なるタイプのエンティティなら問題ないのかなと思います。

>>272
ありがとうございます。
気をつけます。
275デフォルトの名無しさん (ワッチョイ fd7f-fQuj)
垢版 |
2023/01/14(土) 14:40:51.64ID:xHYJkNGt0
>>273
>でも、そうやってnameofを使うわけなのですね。

文字列内(今回はSQL文)に、クラスのフィールド名を組み込みたいときに使うと良いということがよくわかりました。
すると、その場合、クラス名、フィールド名は、データベースの列名に一致させておくことが必須ですね。
どうもありがとうございます。
2023/01/14(土) 21:37:09.12ID:JGEy8Mb7H
ちょっとまって、フィールド名とカラム名を一致させるのはnameofのためじゃなくて
EFやDapperでもって取得したレコードや更新値を全レコード/全カラム自動マッピングさせるためだよ
いまどき手動でDataReaderから1項目ずつ値転記したりDbCommand/DbParameterをいちいち指定したりなんて
もはや許されない前時代的老害コーディングだからやっちゃだめ
あとEFでのストアド実行ならふつうにSqlQuery()とかの生クエリで出来ると思う
2023/01/14(土) 23:34:32.45ID:v+aDVA7Ga
SQL 文を組み立てるのは、数十年前のやり方

Ruby on Rails では、1対1・1対多・多対多など、表同士の関連を定義する
2023/01/15(日) 00:10:03.35ID:GqZOBUMQ0
HttpClientでPostAsyncするときにユーザーエージェントを指定したい時はDefaultHeadersをいじるしかないのでしょうか。
それをするとマルチスレッドで同時に別のユーザーエージェントで送りたいときに独自で排他制御しないといけない気がします。
かと言ってSendAsyncを使うと今度はContent-Typeをapplication/x-www-form-urlencodedにしたくても勝手に後ろに文字コードの;uft-8などが付いてきて困っています。
2023/01/15(日) 00:11:09.01ID:GqZOBUMQ0
記載し忘れましたがHttpClientはひとつのオブジェクトを用意して同時に使います。
2023/01/15(日) 00:44:00.15ID:pBiKKGenM
WebRequest、WebClient、ServicePoint は廃止されている
[アーティクル]
2023/01/05

https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/networking/6.0/webrequest-deprecated

> WebRequest、WebClient、ServicePoint の各クラスは古い形式としてマークされており、コンパイル時に SYSLIB0014 警告が生成されます。
2023/01/15(日) 00:45:46.03ID:pBiKKGenM
勘違いして全然違うのを投入した
2023/01/15(日) 00:56:53.85ID:AxXMsEIz0
FormUrlEncodedContentを持ったHttpRequestMessageをSendAsyncでPOSTしても
Content-Type: application/x-www-form-urlencoded
だけだったけど
.NET7, .NET Fx 4.8両方で
2023/01/15(日) 01:00:32.76ID:GqZOBUMQ0
すみません、また記載し忘れていましたがFormUrlEncodedConentを使用すると文字コードをShiftJISにしたいのですができず困っています。
あとはまだ試してしないのですがスペースが%20になってしまうとのことでそちらについても都合が悪いです。
2023/01/15(日) 01:01:36.57ID:GqZOBUMQ0
%20ではなく+です
285デフォルトの名無しさん (ワッチョイ cd35-5Koo)
垢版 |
2023/01/15(日) 01:08:45.78ID:GqZOBUMQ0
HttpContentというクラスを独自にはせいさせるとできるかもしれないです
明日ためしてみます
2023/01/15(日) 01:18:15.52ID:AxXMsEIz0
https://stackoverflow.com/questions/12390511/httpclient-formurlencodedcontent-encoding
HttpContentから派生じゃなくてByteArrayContentを直に使えばいいらしいよ
287デフォルトの名無しさん (ワッチョイ cd35-5Koo)
垢版 |
2023/01/15(日) 01:20:48.86ID:GqZOBUMQ0
ByteArrayも試したのですが何かしらの問題があったような気が…
すみません、明日さいど確認してみます
2023/01/15(日) 01:23:56.33ID:R4vpna1L0
仕事かな
2023/01/15(日) 01:41:17.79ID:pBiKKGenM
HttpClientのサードパーティー製をNugetで探すと上位の方にかなりパンチの効いたのが出てくる
290デフォルトの名無しさん (スッップ Sdea-AEFQ)
垢版 |
2023/01/15(日) 02:02:46.64ID:C2q54ZnWd
>>277
業務を知らないRuby馬鹿
291デフォルトの名無しさん (ワッチョイ fd7f-sAzJ)
垢版 |
2023/01/15(日) 05:17:18.02ID:14wHoUoo0
>>276
ありがとうございます。
EFもかなり発展しているということなのですね。
以前はまだ未完成みたいな感じだったので、利用を躊躇しておりました。

ストアドの実行もEFでやってみたいと思います。
ただEFについては勉強が必要なので、少し時間がかかりそうです。

DataReaderはVBのときからやっているので、やっぱりいじり方がわかりやすいんですね。

>>277
表同士の結合は、ストアドプロシージャでやっては今の時代はダメなんですかね。
292デフォルトの名無しさん (ワッチョイ fd7f-sAzJ)
垢版 |
2023/01/15(日) 05:21:23.11ID:14wHoUoo0
>>291
いちおう、ドメイン駆動設計なども学びはしました。
リポジトリ、モデル、アプリケーション、プレゼンに分けて構築しています。

でも、効率が良さそうなのはわかりますが、EFとかはどうも苦手意識があって。
いつか、慣れていく必要がありそうだとは思っています。
2023/01/15(日) 05:25:16.63ID:I1C/y1wm0
DB畑なら特定の環境に依存する中途半端なことするより普通にSQL文使うのを選ぶと思うけど
2023/01/15(日) 05:54:23.73ID:r5uLxMWea
Ruby on Rails では、各データベース(DB)の方言に依存しないように、
O/R マッパーで、3大DB のSQLite, PostgreSQL, MySQL を使う

多くはPostgreSQLだから、AWS Aurora とも互換性ある

O/R マッパーを使わないと、各列の型も異なる
2023/01/15(日) 09:53:02.70ID:BFqmBeHGd
>>291
いきなりRailsを持ち出す奴は構ってはいけない
この板の鉄則
296デフォルトの名無しさん (ブーイモ MMde-laSj)
垢版 |
2023/01/15(日) 11:50:48.71ID:AgwxnFRxM
>>292
リポジトリのインターフェースがきちんと定義されててDBの実装に依存する部分が全てリポジトリの実装クラス側に隠蔽されてるなら中身は好きにすりゃ良い
後でリファクタリングするのも大した手間じゃない

リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装は依存性を分離できてないから基本的には良くない設計
(良くない設計だけど開発効率を重視して採用することはある)
297デフォルトの名無しさん
垢版 |
2023/01/15(日) 13:38:07.36ID:GqZOBUMQ0
ByteArrayContentの件ですが、ほかのヘッダーと同様にHttpRequestMessage.Headers プロパティでContent-Typeを設定していましたが、これではContent-Typeだけリクエスト文に現れませんでした。
しかし、ByteArrayContentのHttpContentHeaders.ContentType プロパティに設定することで無事、目的のContent-Typeが送信されるようになりました。
ご協力ありがとうございました。
2023/01/15(日) 17:02:40.66ID:pBiKKGenM
おもしろhttpclient代替ライブラリの出番はなかったと
残念
299デフォルトの名無しさん (ブーイモ MMde-fQuj)
垢版 |
2023/01/15(日) 17:03:22.46ID:i8CV0envM
>>296
>リポジトリのインターフェースがきちんと定義されてて

データベースなどの入れ替えに対応させるためですね。

>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装

これはいまいちピンとこないです。
どういう問題を持っているのですか。
2023/01/15(日) 17:27:16.78ID:pBiKKGenM
動かない時点で問題だろ
依存を切ってるはずなのに
301デフォルトの名無しさん (ブーイモ MMde-fQuj)
垢版 |
2023/01/15(日) 18:01:55.48ID:i8CV0envM
>>299について、>>300さんへ

言い方がまずかったです。

>リポジトリから返される型の名前を変更したらSQL文も動かなくなるみたいな実装

これがどういう実装になってるのかなと。

リポジトリから返される型とは、モデルクラスでしょう。エンティティのことだと思います。

この型の名前を変えるとは、モデルクラスの名を変えるということですかね。
単純にかんがえると、コンパイル段階でエラーになると思います。

SQL文も動かなくなるとは、リポジトリがエンティティを受け入れる段階をいうのかな。

でも、リポジトリの永続化メソッドの引数の型と、エンティティの型が合わないという話なら、やはりコンパイルでエラーになる。

こういう話ではないのかな?
302デフォルトの名無しさん (ブーイモ MMde-laSj)
垢版 |
2023/01/15(日) 18:44:05.72ID:Tpvfm3sDM
>>299
ここにEF使ったリポジトリとSqlCommandやDataReaderを使ったリポジトリの両方を実装してるサンプルであるから見てみるといい
https://www.shoeisha.co.jp/book/download/9784798150727/detail

>>270が動かなくなる実装の一例
2023/01/15(日) 19:07:02.30ID:pBiKKGenM
>>301
なんで段落じゃなくて毎回改行してんの?
2023/01/15(日) 19:07:55.22ID:IyrCQBsgr
>>270が動かなくなるって具体的にどういうこと?
カラムnを実際のテーブルの列名と違う名前にしようとしたとかそういうこと?
2023/01/15(日) 20:23:54.22ID:k2EAOSQD0
正直、不必要なレベルの過剰な依存性の排除だと思うけどな
もしやるならDBを使わない選択が必要な程の
2023/01/16(月) 07:18:54.98ID:3crLqciiM
>>276
うーん?
どこかでやらなきゃいけないのを
先延ばしにしただけのような?

俺はその構造になんの意味も感じなかった
なぜなら絶対にどこかで指定する必要があってその場所が変わるだけだから
間に一つ挟んだら取り決めが増えるだけで何も変わらんよ
2023/01/16(月) 09:06:23.76ID:15MDnu2bd
>>302
>>270はDapperを使ったコードだけどEFやSqlCommandの例とどんな関係が?
2023/01/17(火) 03:21:23.70ID:Pa/g9qeO0
ASP.NETの勉強を始めました。具体的にはASP.NET MVC5 実践プログラミングって本を使っています。
その中でentity frameworkを使ってdbcontextをうにゃうにゃしてデバッグ実行時にデータベースが制作されるようにしてページに表示して…みたいなことをやりました。

それでmdfファイルってのが出来あがってたのですがそれについて質問です。
これが出来上がったデータベースであって、sqlserverがデータを保存する形式ってのは分かりました。
これつまりC#(entity framework?)サイドからするとsqlserverは別に起動してなくてもデータベース本体だけあれば読み込めるということなんでしょうか。
それとも起動時に勝手に裏でsqlserverが立ち上がってたりするのでしょうか。
一応本の流れにそってSQL Express LocalDB edition 11.0なるものはインストールしています。

すいませんこれまでの開発でmanagement studio経由でいじるとかそれくらいしか経験無いんでよく分かってないです。
厳密にはC#の質問じゃないと思うんですけどよろしくお願いします。
309デフォルトの名無しさん (ワッチョイ ca01-FIs7)
垢版 |
2023/01/17(火) 03:46:50.51ID:g2NvLQQ30
>>308
すでに立ち上がってるSQLServerと通信する形となります
SQLServerが動いてなかったらもちろん意味を成しません
アプリから処理を呼び出し→SQLServerに接続→SQLServerがmdfファイルを編集
という感じだと思います
310デフォルトの名無しさん (ワッチョイ ca01-FIs7)
垢版 |
2023/01/17(火) 03:48:48.44ID:g2NvLQQ30
SQLServerは起動しっぱなしですね
応答により電源がついたり消えたりするという形ではないです
2023/01/17(火) 07:20:20.73ID:s3m6BVtYM
LANケーブル抜けたら?
2023/01/17(火) 09:30:13.79ID:mymdZu3lM
>>311
差し直しましょう
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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