[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/24 23:11 / Filesize : 262 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

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があるがな。

377 名前:デフォルトの名無しさん mailto:sage [2023/01/31(火) 19:05:24.58 ID:t9l1A9G+0.net]
jsonのと比べてXmlSerializerだと何か良いことがあるのかね

378 名前:デフォルトの名無しさん mailto:sage [2023/01/31(火) 21:43:56.67 ID:d4xiAPDr0.net]
>>372
型情報を含んでる

379 名前:デフォルトの名無しさん mailto:sage [2023/01/31(火) 21:48:53.87 ID:tyybi/5mp.net]
型情報あっても、その型を解釈出来なけりゃ意味が無いからなぁ
送り手と受け手で同じ型宣言つかわにゃ

380 名前:デフォルトの名無しさん [2023/01/31(火) 22:18:53.12 ID:eUQUkrMna.net]
おなじ宣言つかえばいいのでは

381 名前:デフォルトの名無しさん mailto:sage [2023/01/31(火) 22:25:35.04 ID:tyybi/5mp.net]
作成者が同じとも限らないし、言語が違うとかもあるし
限定的な使い道しか無いんだよなぁ

382 名前:デフォルトの名無しさん mailto:sage [2023/01/31(火) 22:37:59.59 ID:JUpN+VeK0.net]
何がしたいんだ?
自分も使えないデータを知らない人に渡して活用してもらうのか?

383 名前:デフォルトの名無しさん mailto:sage [2023/01/31(火) 22:39:07.69 ID:lNQXIXaf0.net]
そもそもどういう理由でJSONを選んだのか
シリアライザも色々あるから、それに適さないデータを無理に扱おうとしても苦労するだけよ

384 名前:デフォルトの名無しさん (ワッチョイ 8335-6BSU) mailto:sage [2023/02/01(水) 01:00:31.32 ID:gXlE0Qft0.net]
用途→状態保存
なぜ→特になし



385 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 04:01:10.47 ID:RyGmTTdX0.net]
>>367
辞書に入れる要素のクラス自身をdynamicにするんじゃなくて
そのクラス内のプロパティにdynamicから継承したクラスをズラズラ並べたら?
泥臭いけど、やりたい事は実現できる

386 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 07:07:59.79 ID:OQq7+g560.net]
https://learn.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/serialization/

だから他のクラスに読み出す必要性は?

387 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 11:28:10.11 ID:BH4poKX+a.net]
Marshal だろ。たいていの言語にある。
でも、言語のバージョンが異なると互換性がない

dRuby みたいな分散・リモートオブジェクト。
送信先で、オブジェクトを復元できる機能

ただし、プロセスID など、各システムで固有のものは送れない・復元できない

例えば、システムA のプロセスID・100 を送っても、
システムB の100に出来ない

388 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 11:59:27.64 ID:UTKch+wba.net]
そもそもクラス名を指定すれば復元できるんだからクラスを保存するのは普通
ただのデータ構造

389 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 14:10:05.95 ID:ebRzTgdK0.net]
async/awaitが出た頃に「BackGroundWorkerは時代送れだから使うな」
って聞いた気がするけども、ググると新しい記事でも使っています。
用途次第なのでしょうが、BackGroundWorkerも使って良いのでしょうか?

390 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 15:00:43.93 ID:v1HsWaA1d.net]
>>384
廃止になる情報は見つからないね

391 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 15:09:07.40 ID:Ke8/ro290.net]
古いframeworkのバージョンしか使えない場合とか

392 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 19:04:34.85 ID:dDom2t/30.net]
async汚染が気になって使えない

393 名前:デフォルトの名無しさん mailto:sage [2023/02/01(水) 19:55:41.40 ID:maza5pHhp.net]
プロパティに非同期呼び出しがあって詰んだ思い出

394 名前:デフォルトの名無しさん mailto:sage [2023/02/02(木) 06:15:09.17 ID:upKEKEWBa.net]
>>384
性能は同じだから、どっちを使っても良いと思う



395 名前:デフォルトの名無しさん mailto:sage [2023/02/03(金) 17:52:58.42 ID:Dixtr4kT0.net]
win32apiのTextOut関数を使ってコントロールへ文字を表示したいのですが
マウスをドラッグして、そのコントロールを含むフォームのサイズを変更したときに
タイミングによっては例外が発生してしまいます、どのように修正するのが正当なやり方でしょうか?
void MyTextOut(){
TextOut(......)
}

protected override void OnPaint(){
MyTextOut()
}

396 名前:デフォルトの名無しさん mailto:sage [2023/02/03(金) 21:39:19.06 ID:Ug5oxsRH0.net]
まずどんな例外が発生しているのかそういう情報が無いと誰も答えられないような






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef