- 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
- 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
なんで段落じゃなくて毎回改行してんの?
- 308 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 19:07:55.22 ID:IyrCQBsgr.net]
- >>270が動かなくなるって具体的にどういうこと?
カラムnを実際のテーブルの列名と違う名前にしようとしたとかそういうこと?
- 309 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 20:23:54.22 ID:k2EAOSQD0.net]
- 正直、不必要なレベルの過剰な依存性の排除だと思うけどな
もしやるならDBを使わない選択が必要な程の
- 310 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 07:18:54.98 ID:3crLqciiM.net]
- >>276
うーん? どこかでやらなきゃいけないのを 先延ばしにしただけのような? 俺はその構造になんの意味も感じなかった なぜなら絶対にどこかで指定する必要があってその場所が変わるだけだから 間に一つ挟んだら取り決めが増えるだけで何も変わらんよ
- 311 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 09:06:23.76 ID:15MDnu2bd.net]
- >>302
>>270はDapperを使ったコードだけどEFやSqlCommandの例とどんな関係が?
- 312 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 03:21:23.70 ID:Pa/g9qeO0.net]
- ASP.NETの勉強を始めました。具体的にはASP.NET MVC5 実践プログラミングって本を使っています。
その中でentity frameworkを使ってdbcontextをうにゃうにゃしてデバッグ実行時にデータベースが制作されるようにしてページに表示して…みたいなことをやりました。 それでmdfファイルってのが出来あがってたのですがそれについて質問です。 これが出来上がったデータベースであって、sqlserverがデータを保存する形式ってのは分かりました。 これつまりC#(entity framework?)サイドからするとsqlserverは別に起動してなくてもデータベース本体だけあれば読み込めるということなんでしょうか。 それとも起動時に勝手に裏でsqlserverが立ち上がってたりするのでしょうか。 一応本の流れにそってSQL Express LocalDB edition 11.0なるものはインストールしています。 すいませんこれまでの開発でmanagement studio経由でいじるとかそれくらいしか経験無いんでよく分かってないです。 厳密にはC#の質問じゃないと思うんですけどよろしくお願いします。
- 313 名前:デフォルトの名無しさん [2023/01/17(火) 03:46:50.51 ID:g2NvLQQ30.net]
- >>308
すでに立ち上がってるSQLServerと通信する形となります SQLServerが動いてなかったらもちろん意味を成しません アプリから処理を呼び出し→SQLServerに接続→SQLServerがmdfファイルを編集 という感じだと思います
- 314 名前:デフォルトの名無しさん [2023/01/17(火) 03:48:48.44 ID:g2NvLQQ30.net]
- SQLServerは起動しっぱなしですね
応答により電源がついたり消えたりするという形ではないです
- 315 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 07:20:20.73 ID:s3m6BVtYM.net]
- LANケーブル抜けたら?
- 316 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 09:30:13.79 ID:mymdZu3lM.net]
- >>311
差し直しましょう
- 317 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 09:37:04.80 ID:FlIYwx2Q0.net]
- 神に祈れば掃除のおばちゃんがエアコンを切らない
- 318 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 21:28:25.23 ID:Pa/g9qeO0.net]
- >>309
ありがとうございました。sqlserverちゃんと起動してるかとか確認しないとだめですね
- 319 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 00:09:04.38 ID:hk0QW4ON0.net]
- あの紫の本かな 現状MVCのテキストってあれくらいしかないよね
ちょこっと読んで放置してたけど読み直すか
- 320 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 00:28:03.93 ID:3sYvYO2/0.net]
- >>314
CompactとかLocalDBとかは常にインスタンスが上がってるような形じゃないけどな
- 321 名前:デフォルトの名無しさん (ワッチョイ 1579-iekx) mailto:sage [2023/01/18(水) 08:28:02.80 ID:rq0JYZ+R0.net]
- >>312
再接続するプログラムになってるかな?
- 322 名前:デフォルトの名無しさん (ワッチョイ ca01-FIs7) [2023/01/18(水) 08:53:04.91 ID:vYh8JMIk0.net]
- >>314
( ̄ー ̄)bグッ!
- 323 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 11:14:23.74 ID:2vbdQEqi0.net]
- LANケーブルを指しなおすプログラム?
- 324 名前:デフォルトの名無しさん [2023/01/18(水) 12:06:41.51 ID:wDe6wdJea.net]
- 掃除のおばちゃんを制御するプログラムを弄れ
- 325 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 12:18:27.54 ID:LLGrNdcqa.net]
- 再接続というのは物理的に切断されたものが復旧した時に再度コネクションすることだぞここでは
- 326 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 12:39:01.52 ID:3lDNp2YJa.net]
- >>316
そいつらはインプロセスだからある意味呼び出し側が起動してたらLocalDBのプロセスも上がってるってことだが それ以前にCompactはもう忘れたけどLocalDBはSQL-Serverと同じでDBMSの起動とインスタンスの起動は違うぞ SqlLocalDB.exe start / stop でインスタンスを起動/停止できる https://learn.microsoft.com/ja-jp/sql/relational-databases/express-localdb-instance-apis/command-line-management-tool-sqllocaldb-exe?view=sql-server-ver16
- 327 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 13:27:16.30 ID:igIZvBCZ0.net]
- >応答により電源がついたり消えたりするという形ではないです
ここが分からんw 鯖が物理的に別にあるってことかな
- 328 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 14:36:35.17 ID:3sYvYO2/0.net]
- >>322
LocalDBはインプロセスじゃない インスタンス事前に起動させて複数プロセスからアクセスとかできなくはない まあ大概は自動でインスタンス上がるんだが、手動でもできるってだけ つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの?
- 329 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 15:18:33.28 ID:UiCoGtZYd.net]
- selenium webdriverのC#版の話題ってここでいいですか?
操作対象のdriverオブジェクトから、 Winformsで言う普通のウィンドウハンドル(NativeWindowHandle)を取得したいんですが、driver.CurrentWindowHandleプロパティで得られる値はselenium専用のウィンドウ識別用の文字列のようで使えませんでした。 stackoverflowとか見てもプロセスからタイトル名で探索する、みたいないまいち冴えない方法しか何故か見つかりませんでした。 ブラウザを操作してるのに一意なハンドル情報を得る方法が無いなんて考え難いので、何か方法はあると踏んでるのですが、たどり着きませんでした。上の冴えない方法より洗練された方法があれば教えて下さい。
- 330 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 15:20:53.55 ID:Hg1RmCSYa.net]
- >>324
> LocalDBはインプロセスじゃない すまん、ボケてたわ 単にリモート接続できないSQL-Serverだったな > つかその文脈、DBMS(の起動)とインスタンス(の起動)ってどういう使い分けなの? DBMSはSQL Server VSS Writerサービス(sqlwriter.exe)の話 インスタンスはリンク先読めばわかる 複数インスタンスとか使ったことないのかな?
- 331 名前:デフォルトの名無しさん (ワッチョイ 954f-wtyD) mailto:sage [2023/01/18(水) 16:15:25.52 ID:/+rmiMsB0.net]
- >>325
Seleniumはマルチプラットフォームなんで Windowsローカルの話なんて知らんというのはごく当たり前のように思うが
- 332 名前:デフォルトの名無しさん (オッペケ Sr6d-2lig) mailto:sage [2023/01/18(水) 16:36:04.45 ID:oNP58X/Tr.net]
- >>325
以前に探して見つからなかった記憶 そのときはやりたいことがウィンドウの最小化ぐらいだったんで RemoteWebDriver.Manage().Window.Minimize() を探し出して解決
- 333 名前:デフォルトの名無しさん (スップ Sdea-dnaz) mailto:sage [2023/01/18(水) 20:05:06.38 ID:UiCoGtZYd.net]
- >>327
>>328 ありがとうございます。参考になりました。 switchto~で何か出来そうな気もしましたが、 いまいち動きが読めないので今回は大人しく冴えない方法を使う事にします。
- 334 名前:デフォルトの名無しさん (ワッチョイ 292f-EsBK) mailto:sage [2023/01/18(水) 20:57:22.30 ID:3sYvYO2/0.net]
- >>326
WriterをしてDBMSとか言うやつは初めて見たわ 通常の文脈であればDBMSはDBエンジンをメインとした一式で SQL Serverにおいてはまさにインスタンスなんだが つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど シャドウコピーできなくなるからオンラインバックアップ取れないだけで いわゆるlazy writerみたいなDB Writerと勘違いしてるのかね
- 335 名前:デフォルトの名無しさん (ワッチョイ a501-ue0x) mailto:sage [2023/01/18(水) 21:17:36.32 ID:q1S59c8f0.net]
- >>330
> つかSQL ServerのVSS Writerって、べつに必須じゃなかった気がするけど SQL-Server VSS Writer とシャドーコピーサービスは別物だぞ あとSQL-Serverのインスタンスはプロセスとは関係ない sqllocaldb create\|c "instance name" [version-number] [-s] とかで増やすこともできるけど増やしてもプロセスやスレッドは増えないよ ちなみにOracleでもインスタンスの用語はデータベースファイルセットの意味で使われてる https://docs.oracle.com/cd/F32587_01/cncpt/oracle-database-instance.html#GUID-67247052-CE3F-44D2-BA3E-7067DEF4B6D5
- 336 名前:デフォルトの名無しさん (ワッチョイ 292f-EsBK) mailto:sage [2023/01/18(水) 22:36:22.92 ID:3sYvYO2/0.net]
- >>331
シャドウコピーはOSが提供してる機能のことで、VSS WriterはSQL Serverがそれを使うためのサービスな >SQL-Serverのインスタンスはプロセスとは関係ない SQL Serverのインスタンスの実態はsqlserver.exeってプロセスだが? ローカルDBでも、インスタンスごとにsqlserver.exeってプロセスが動くんだが?
- 337 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 14:22:50.07 ID:VgR3j9B70.net]
- C#のexeやdllはILマシン語にコンパイルされるというのを知りました
でも例えばCのexeはそのCPUに対応するマシン語になりますよね ですけどC#のexeは一旦JITを通して実行される この一度通すっていうのをどうやって判断しているんでしょうか C#のexeをCのexeみたいに直接実行しようとして実行できねーよってならないのはどういう仕組みなんでしょうか
- 338 名前:デフォルトの名無しさん [2023/01/25(水) 14:57:50.37 ID:cPQ/8DlSM.net]
- C#のexeに「僕に含まれてるデータをJITを通して実行してね」て、CPUに対応するマシン語で書いてあるんじゃね?
- 339 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 14:58:14.37 ID:KPuKutaL0.net]
- >>333
atmarkit.itmedia.co.jp/fdotnet/dotnetwork/index/index.html 古い記事だが基本は変わってない
- 340 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 15:01:44.79 ID:UaGoD80Hp.net]
- 8086系は相対ジャンプや相対コールが無かったから
プログラム実行前にアドレス解決しなきゃならないとか 色々前処理が必要だったんだ その延長で前処理に色々やらせる処理を追加してるなんて 普通にやっているんだよなぁ
- 341 名前:デフォルトの名無しさん [2023/01/25(水) 15:09:07.39 ID:YO+oGQTm0.net]
- C#が関係なくなっちゃうけど、主要Linux系OSは同じような仕組みで他のCPU用の実行ファイルとかまで動いちゃう
- 342 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 16:41:58.38 ID:SH9Oxo2M0.net]
- VC# datagridviewにて
CurrentCellChangedイベントで選択セルの結果を取得したいと思いました。 (rowfilterなどで変化した場合もとりたいため、clickイベントにしませんでした) しかし、DBから読み込んだ時点ですぐ発生するイベントにて System.NullReferenceExceptionがでます。 CurrentCell.Value == null で判断できるのかと思いましたが違うようでした。 データがなかったときに何もしないというコードはどう書くべきなのでしょうか。 今までPHPで簡単なものを作っておりましたが、 コントロールプロパティやイベントが何を返してて、 どう対処するのかが基礎的なものがわかりません。 nullが返ってくるんだから if nullじゃないの?というのが間違ってる...のでしょうか? https://ideone.com/J0iDmr
- 343 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 17:00:33.96 ID:VgR3j9B70.net]
- >>335
あーこれは本当に素晴らしい記事でした。ありがとうございました。 windowsローダーとかPEフォーマットとかまーったく知らなかったですね。機械語の塊の実行ファイルをOSが読んでいくくらいにしか思ってませんでした。これやっぱ常識なんですかね。 C#の本読んでも当たり前のようにCLRとか出てきてよくわかんねぇとかなってましたけどこれが前提知識ならそりゃ分からんわってなりました。
- 344 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 17:49:01.17 ID:+bDum9h60.net]
- >>338
他のクラスでも同じだがCurrentCell.Value == nullの前にCurrentCell== nullを判定しないとnullに属するメンバを指定したら存在するはずがないのでエラーになる if (dgv.CurrentCell== null || dgv.CurrentCell.Value == null) { return; }
- 345 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 17:56:26.24 ID:Q2YcVXM80.net]
- >>338
VSでデバッグ実行したら、例外が出たときにそこで止まって発生した行が表示されるよね そこでローカルウィンドウとかでどの変数に何が格納されているか確認するといいよ
- 346 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 17:59:52.43 ID:SH9Oxo2M0.net]
- >>340
ありがとうございます!! >DataGridView.CurrentCell.get が null を返しました おかげさまでようやく このエラーメッセージが何を言いたいのか理解できました。
- 347 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 18:01:47.91 ID:E6MdhQPL0.net]
- .NET Frameworkランタイム入れていない
古いWindowsで開くと形式がおかしいとか言われたはず
- 348 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 18:03:19.22 ID:SH9Oxo2M0.net]
- >>341
ありがとうございます!! いま改めて見たら dgv.CurrentCellがnull であって dgv.CurrentCell.value ではなかったです。 この違いにまったく気づいてなく 頭をかかえていました。
- 349 名前:デフォルトの名無しさん mailto:sage [2023/01/25(水) 22:33:14.66 ID:VgR3j9B70.net]
- datagridviewは本当に色々とめんどくさいよね
起きるイベントの順番とかタイミングとかカオスでバグが出まくる
- 350 名前:デフォルトの名無しさん [2023/01/26(木) 01:02:50.84 ID:41WP6aJtd.net]
- >>345
お前が馬鹿なだけ
- 351 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 22:49:39.84 ID:lq03KzKz0.net]
- 多分なんちゃらview全般に言えるのでは
- 352 名前:デフォルトの名無しさん mailto:sage [2023/01/27(金) 17:54:28.03 ID:taOXdrfWM.net]
- 別に変なことしたくねーのに
変なことしたいでしょ? って前提で作られててな
- 353 名前:微妙なイベントの順番をハンドリングしないと普通のことも
できないのは正直クソだと思う [] - [ここ壊れてます]
- 354 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 13:20:46.28 ID:I9B5TSew0.net]
- シンプルなテーブルを作るにあたりDataGridViewとListViewどっち使うか毎度悩む
そしてこいつらは行や列の結合セルを作れない事に気付いてTableLayoutPanelに移行しようとするもこっちはこっちでデータとのバインディングが面倒で断念 最終的にはただのControlクラスを継承したまっさらな白紙にOnPaintで自力描画する事に落ち着くのである
- 355 名前:デフォルトの名無しさん [2023/01/28(土) 14:52:36.43 ID:iXjFLTNM0.net]
- null 許容参照型について教えて下さい。
class Person { // null 非許容だと警告が表示されるので、null 許容にしています。 public string? Name { get; set; } } 上記のケースで、null 非許容のまま警告を回避する為に、プロパティ宣言時に、下記のようにしようと考えています。 public string Name { get; set; } = string.Empty; ただ、Name プロパティを参照する時に求める要件は「null でない事」ではなく「人名が代入されている事」なので、 string.Empty で null 警告を回避しても、string.Empty は人名ではない為、意味がありません。 この場合、Name を参照する側では、 if ( person.Name != null ) をチェックするか if ( person.Name != string.Empty ) をチェックするかが変わるだけで、null 許容参照型にするメリットを感じないのですが、メリットはあるのでしょうか?
- 356 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 15:02:12.75 ID:acHVjvs20.net]
- ケースによるが、コンストラクタを用意して
public Person(string name) { Name=name; }
- 357 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 15:03:19.66 ID:acHVjvs20.net]
- とやって、全てのオブジェクトには名前があるように保証できるようにするのが俺のやり方だわ
- 358 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 16:32:58.07 ID:SSo2rJoBd.net]
- >>349
結合セルもできないのか そういうの考えるともう枯れたHTMLで画面作る方が楽だなーって思う
- 359 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 16:37:13.72 ID:qgiHv5Wf0.net]
- >>350
空文字は許容されてなくてnull関連の演算子も使わないならどっちでもいいんじゃね
- 360 名前:デフォルトの名無しさん mailto:sage [2023/01/28(土) 18:21:00.62 ID:DKSWYQK4a.net]
- >>350
null許容の場合は空文字とnull両方を考慮しないといけないだろう
- 361 名前:デフォルトの名無しさん [2023/01/29(日) 06:55:37.48 ID:Tvr/A6EZa.net]
- >>349
WPFでやれば楽よ
- 362 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 10:10:30.46 ID:Bt1+Pj/S0.net]
- >>349
個人開発なら構わんが、会社でそういう糞コントロール作るなよ 保守するのが面倒くさい
- 363 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 10:26:49.48 ID:tvJJpmA20.net]
- >>349
最近気づいたけど セルの変更しないなら いっそピクチャーボックスもあり スクロール制御しないと駄目だけど
- 364 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 11:24:21.80 ID:1KUwXnGJ0.net]
- 大昔からString.IsNullOrWhiteSpaceでチェックしていたから気にしたことなかったわ
- 365 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 22:17:23.47 ID:4W3kbClF0.net]
- JsonSerializerでdynamic型の配列に異なる型のオブジェクトを混在させたのもをSerializeしてからDeserializeするときに型を復元するにはどうすればよいでしょうか。
- 366 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 22:26:24.35 ID:rXBejGf/a.net]
- キャスト
- 367 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:02:54.21 ID:4W3kbClF0.net]
- キャストする型が不定なので保持しておきたいのですがそのような機能はないでしょうか。
参照関係はメタデータとして保持できるのですが… なければ独自で型情報を保持するしかないと思うのですが、List<Hoge>のような型が存在する場合にGetType().Nameを読み取ってもList`1のような謎の文字列になってしまい…
- 368 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:08:33.77 ID:oFd10dGn0.net]
- 普通はtypeofとかisとか使うんじゃね?
- 369 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:10:20.10 ID:oFd10dGn0.net]
- object型で何で扱って、typeofとかisとか使ってマッチさせるんじゃねえの?
- 370 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:12:24.68 ID:4W3kbClF0.net]
- 全てのパターンの型でマッチするものを探すようなコードを実装するということでしょうか。
汎用的なものは難しいですかね
- 371 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:33:12.81 ID:EKczJlFVa.net]
- jsonに型情報なんか入ってないからプログラマが型を教えてやるしかねーぞ
入れられるならプロパティとして入れとけ
- 372 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:41:03.69 ID:4W3kbClF0.net]
- うーむ…中々難しいのですね。
辞書に色々ごちゃごちゃにぶち込んで一発でシリアル化、一発で逆シリアル化とはいかないですか。
- 373 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:50:54.82 ID:EKczJlFVa.net]
- プロがやれば何とかなると思うから依頼してみなよ
さすがに詳しいことをここで聞いたり説明したりするのはめんどいわ
- 374 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:52:57.23 ID:4W3kbClF0.net]
- 確かになんとかはなるかもしれませんね…
簡単にはいかないのは確か、というところでしょうか。 JsonSerializerが参照情報だけではなく型情報もメタデータとして保持できればよかったのですがね。
- 375 名前:デフォルトの名無しさん mailto:sage [2023/01/30(月) 23:58:17.04 ID:IhW3z+yo0.net]
- >>367
TypeNameHandling.All しかしセキュリティリスクがあるからおススメできない
- 376 名前:デフォルトの名無しさん mailto:sage [2023/01/31(火) 09:16:17.88 ID:d4xiAPDr0.net]
- XMLでよければXmlSerializerがあるがな。
|

|