!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
http://mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
http://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/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part142
■ このスレッドは過去ログ倉庫に格納されています
1名無C ◆jPpg5.obl6 (ワッチョイ 762c-FuHz)
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0482デフォルトの名無しさん (スッップ Sdb2-XxWr)
2019/04/23(火) 02:35:38.55ID:1xhRm/Xtd >>481
え…
え…
483デフォルトの名無しさん (アウアウウー Sacd-v9Kr)
2019/04/23(火) 07:53:20.75ID:5v63vvPIa TickCountの事だと思う。
484デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 11:11:38.25ID:D0U8cwP90 awaitのついた文の次の文を実行する際に、await前と同じスレッドに帰ってきてもらうことってできないの?
485デフォルトの名無しさん (ワッチョイ 6e7c-lfmU)
2019/04/23(火) 11:25:52.45ID:NBcK336D0 元のスレッドがそういうことできる機能を持ってればできるよ
WinFormやWPFのGUIスレッドはメッセージループで実現してて
それらの場合はGUIスレッドでawaitすればGUIスレッドに戻ってくるのが既定だし
WinFormやWPFのGUIスレッドはメッセージループで実現してて
それらの場合はGUIスレッドでawaitすればGUIスレッドに戻ってくるのが既定だし
486デフォルトの名無しさん (オイコラミネオ MM91-8JmN)
2019/04/23(火) 12:18:02.90ID:m6tbNaeWM Pythonでカラー画像をRGBごとに分割して出力するスクリプトを書いたんだけど、
opencv使わずにC#でも出来るのかな?
C#でもnumpyみたいなの無いの?
opencv使わずにC#でも出来るのかな?
C#でもnumpyみたいなの無いの?
487デフォルトの名無しさん (ワッチョイ a2a5-hooH)
2019/04/23(火) 12:20:58.93ID:4ETsFZLA0 どんだけ馬鹿なんだよ
488デフォルトの名無しさん (スププ Sdb2-Sl/5)
2019/04/23(火) 13:00:40.13ID:N4fQ2uHcd >>486
numpyってrubyですか?
numpyってrubyですか?
489デフォルトの名無しさん (ワッチョイ 7988-yS2j)
2019/04/23(火) 15:41:23.24ID:elaW7zc+0490デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 16:29:44.88ID:D0U8cwP90 >>485
コンソールアプリ等だとなかなか難しいんかな
コンソールアプリ等だとなかなか難しいんかな
491デフォルトの名無しさん (ワッチョイ 3235-DNyu)
2019/04/23(火) 16:33:48.41ID:EaCRsjQU0 >>490
Task.WaitAnyとかでできんもんか?
Task.WaitAnyとかでできんもんか?
492デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 17:58:47.89ID:xFm0RmkHa493デフォルトの名無しさん (スププ Sdb2-Sl/5)
2019/04/23(火) 19:05:14.26ID:hvzt5+/sd >>492
しょうもない嘘をつくな
しょうもない嘘をつくな
494デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 19:28:13.89ID:2vLu2U8QM 誤解が誤解を生む
仕様について理解が足りない
仕様について理解が足りない
495デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 19:35:04.22ID:xFm0RmkHa ネタじゃなくて本気で変な誤解してるのか...
メソッドの途中で行が変わると別のスレッドで実行されるとかそんな言語怖くて使えないよwww
メソッドの途中で行が変わると別のスレッドで実行されるとかそんな言語怖くて使えないよwww
496デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 19:36:05.31ID:2vLu2U8QM お前は勘違いしてる
GUIとCUIで仕様が違ってる
GUIとCUIで仕様が違ってる
497デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 19:50:14.81ID:2vLu2U8QM await/asyncは単なるTask非同期処理を簡易的に書ける糖衣構文
次にawaitの次をどのスレッドになるかはその時の状態次第
GUIではそれでは困るのでデフォルトで同じスレッドが処理をするようにしてあるだけ
次にawaitの次をどのスレッドになるかはその時の状態次第
GUIではそれでは困るのでデフォルトで同じスレッドが処理をするようにしてあるだけ
498デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 20:19:35.25ID:xFm0RmkHa 訳のわからん勘違いをしてるのはどっちだよ
自信満々で馬鹿じゃないマジで
自信満々で馬鹿じゃないマジで
499デフォルトの名無しさん (ワッチョイ 0d00-YIQo)
2019/04/23(火) 20:30:14.95ID:aIitEIPQ0500デフォルトの名無しさん (ワンミングク MM62-tFh+)
2019/04/23(火) 20:30:27.32ID:PlCSQgU2M deligate
501デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/23(火) 20:36:54.48ID:iDnak3xha502デフォルトの名無しさん (アウアウエー Sada-shJk)
2019/04/23(火) 20:41:16.72ID:xFm0RmkHa 勘違いをしているのは俺の方だった...
申し訳ないですw
申し訳ないですw
503デフォルトの名無しさん (ブーイモ MMd5-hooH)
2019/04/23(火) 21:04:08.70ID:2vLu2U8QM すなおでいいんでない?
504デフォルトの名無しさん (スップ Sd12-yS2j)
2019/04/23(火) 21:19:00.48ID:7omDh/oid 煽る時点で目糞鼻糞
505デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 21:57:22.24ID:D0U8cwP90 同じスレッドに戻ってきてもらうのに、簡単な方法ってないのかな・・・・
506デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/23(火) 22:10:23.58ID:iDnak3xha507デフォルトの名無しさん (ワッチョイ 092d-RDgi)
2019/04/23(火) 22:42:29.23ID:D0U8cwP90 >>506
WebAPIサーバを作りたく、その中で扱うデータについてトランザクション処理みたいなことをしたかったんです
通信関連でAwaitが多用されている中でも、データのロックをできるだけ減らしたい、またうっかりミスしてロック外に出ないでほしいと思ったんです
WebAPIサーバを作りたく、その中で扱うデータについてトランザクション処理みたいなことをしたかったんです
通信関連でAwaitが多用されている中でも、データのロックをできるだけ減らしたい、またうっかりミスしてロック外に出ないでほしいと思ったんです
508デフォルトの名無しさん (アウアウエー Sada-nHqp)
2019/04/24(水) 00:21:10.86ID:9Dlmymg8a >>507
それを聞いても、「特定スレッドで絶対に処理したい」が主目標にはならない気がする
「ロックにReaderWriterLockSlimを使っていて、ロック取得と解放は同じスレッドで行う必要がある」のような状況ならまだ分かるんだけど
もしもこの状況であるなら、SemaphoreSlimでロックするようにすれば、WaitOneAsyncで待つスレッドと、Releaseするスレッドを別にできる(=間でawaitできる)
万一本当に何か理由があって特定スレッドで処理を続けたいのなら、Taskをawaitするのでなく.Wait()で待つようにすれば、スレッドは切り替わらなくなる
> うっかりミスしてロック外に出ないでほしい
これが「ロックを取得したけど、解放を忘れる」ことを指すのであれば
try {} finally {} や、ラップクラスを作ってIDisposable実装してusing() {} するのが対策になるかもしれない
取得と解放がメソッドを跨いだりするなら面倒くさくなるけど……
それを聞いても、「特定スレッドで絶対に処理したい」が主目標にはならない気がする
「ロックにReaderWriterLockSlimを使っていて、ロック取得と解放は同じスレッドで行う必要がある」のような状況ならまだ分かるんだけど
もしもこの状況であるなら、SemaphoreSlimでロックするようにすれば、WaitOneAsyncで待つスレッドと、Releaseするスレッドを別にできる(=間でawaitできる)
万一本当に何か理由があって特定スレッドで処理を続けたいのなら、Taskをawaitするのでなく.Wait()で待つようにすれば、スレッドは切り替わらなくなる
> うっかりミスしてロック外に出ないでほしい
これが「ロックを取得したけど、解放を忘れる」ことを指すのであれば
try {} finally {} や、ラップクラスを作ってIDisposable実装してusing() {} するのが対策になるかもしれない
取得と解放がメソッドを跨いだりするなら面倒くさくなるけど……
509デフォルトの名無しさん (ワッチョイ 23ad-BP9Y)
2019/04/25(木) 23:50:01.61ID:1l/c830P0 https://ideone.com/TM1zJh
if (ob.volume == volume)この部分なのですが
左辺は引数で取ったobのメンバ変数であることは分かるのですが右辺はどのメンバ変数なんでしょうか?
入門書のコードなのですが…
if (ob.volume == volume)この部分なのですが
左辺は引数で取ったobのメンバ変数であることは分かるのですが右辺はどのメンバ変数なんでしょうか?
入門書のコードなのですが…
510デフォルトの名無しさん (ワッチョイ 2d5f-KI0z)
2019/04/25(木) 23:52:47.61ID:LJHMbymK0 >>509
6行目
6行目
511デフォルトの名無しさん (ワッチョイ 2d5f-KI0z)
2019/04/25(木) 23:54:19.01ID:LJHMbymK0 いや、thisって答えた方が良いのか
512デフォルトの名無しさん (ワッチョイ 4b2c-t8aL)
2019/04/25(木) 23:59:26.79ID:8Sf9N2Ww0 19行目にも同じ構造があるけどそっちはすんなり入ったんだろうか
513デフォルトの名無しさん (ワッチョイ 23ad-BP9Y)
2019/04/26(金) 00:01:25.44ID:6Aa9jI4a0514デフォルトの名無しさん (ワッチョイ cbda-KxX0)
2019/04/26(金) 23:30:08.64ID:9lAtl2Yi0 コンストラクタ内で例外をthrowするのはご法度ですか?
515デフォルトの名無しさん (スフッ Sd43-jluM)
2019/04/26(金) 23:43:18.42ID:p/I2x8fjd >>514
定石ですよ
定石ですよ
516デフォルトの名無しさん (アウアウエー Sa13-jWJP)
2019/04/27(土) 00:06:35.36ID:Ern7/KCha >>514
ご法度ではないし、むしろインスタンスを正しく構築できないなら積極的にthrowしてほしい
例えばStreamReader(String)の場合、ArgumentException系列から
FileNotFoundExceptionやDirectoryNotFoundExceptionのIOException系列までthrowする
ご法度ではないし、むしろインスタンスを正しく構築できないなら積極的にthrowしてほしい
例えばStreamReader(String)の場合、ArgumentException系列から
FileNotFoundExceptionやDirectoryNotFoundExceptionのIOException系列までthrowする
517デフォルトの名無しさん (ドコグロ MM93-iwjh)
2019/04/27(土) 00:38:42.27ID:yEc5G7yUM 悪いとは言わないけど、最近はあまりコンストラクタで例外投げるような処理やらなくなったなあ
何故かと考えたら、async/awaitのせいだと気付いた
コンストラクタではawaitできないから、昔みたいにコンストラクタでファイル読んだりするのはほぼ無くなった
何故かと考えたら、async/awaitのせいだと気付いた
コンストラクタではawaitできないから、昔みたいにコンストラクタでファイル読んだりするのはほぼ無くなった
518デフォルトの名無しさん (アウアウエー Sa13-iwjh)
2019/04/27(土) 00:45:53.35ID:k66IsG4/a あとDIと相性が悪い
DI使ってると、コンストラクタで例外投げたらそもそもアプリが起動しない
DI使ってると、コンストラクタで例外投げたらそもそもアプリが起動しない
519デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 02:44:50.91ID:ni4YCIMc0 ドキュメントもコンストラクタで投げる可能性のある例外一覧が必要になるけど
実際あげきれなくて手薄になりがち
そうなると設計できない
例外の種類でその後の動作をハンドリングしたいときに動かしてみて
キャッチの種類を分けるしかない
仕様書に書いてあるこのエラー出せないんすけど?
このときの例外増やしてもらえます?
→入れた引数から判断できるでしょ?とかキチガイかよって
実際あげきれなくて手薄になりがち
そうなると設計できない
例外の種類でその後の動作をハンドリングしたいときに動かしてみて
キャッチの種類を分けるしかない
仕様書に書いてあるこのエラー出せないんすけど?
このときの例外増やしてもらえます?
→入れた引数から判断できるでしょ?とかキチガイかよって
520デフォルトの名無しさん (ワッチョイ 6347-jluM)
2019/04/27(土) 02:55:41.53ID:TtZ/uEZc0 >>519
例外の種類を完全に把握できないのはコンストラクタに限ったことではないだろ
例外の種類を完全に把握できないのはコンストラクタに限ったことではないだろ
521デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 03:07:26.16ID:ni4YCIMc0522デフォルトの名無しさん (ワッチョイ 6347-jluM)
2019/04/27(土) 03:45:53.67ID:TtZ/uEZc0 その例外を全部把握しなきゃいけないというのがアホな考えなんだよ
予期できないのはExeceptionとしてまとめてキャッチして処理しとけばなんの問題もないね
予期できないのはExeceptionとしてまとめてキャッチして処理しとけばなんの問題もないね
523デフォルトの名無しさん (ワッチョイ 0d38-c7g7)
2019/04/27(土) 06:32:15.89ID:QhVWSAZD0 どっちも乱暴だな
524デフォルトの名無しさん (ワッチョイ 4d61-KxX0)
2019/04/27(土) 07:35:46.92ID:3SWE0tmA0 例外は握りつぶすのが定石
525デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 08:12:46.03ID:PiMoxWjk0 >>522
設計書になんて書くん?
俺んとこ例外使うなら設計書に書いてない例外出しちゃうと大変なんだよ
MSのドキュメントも全部はねーし
マジ厄介
でもお客の言い分もわかる気がするんだよね
流石に何が来るかわかりませんってのはどうなの?
って思う
設計書になんて書くん?
俺んとこ例外使うなら設計書に書いてない例外出しちゃうと大変なんだよ
MSのドキュメントも全部はねーし
マジ厄介
でもお客の言い分もわかる気がするんだよね
流石に何が来るかわかりませんってのはどうなの?
って思う
526デフォルトの名無しさん (ワッチョイ 4d61-r3uF)
2019/04/27(土) 08:15:07.62ID:PiMoxWjk0 >>522
ああ、だから例外返さないよねそれ
ああ、だから例外返さないよねそれ
527デフォルトの名無しさん (スフッ Sd43-jluM)
2019/04/27(土) 08:34:22.02ID:9yG2LI1yd 例外の発生要因なんてあらゆるものがあるんだから全部明示しろというお客の主張が不条理
設計書に例外全部明示しろとか要求されたことないね
設計書に例外全部明示しろとか要求されたことないね
528デフォルトの名無しさん (アウアウエー Sa13-OsmV)
2019/04/27(土) 08:51:37.56ID:yNGf8etVa 規約が足かせになってる場合は無視したほうがいい
スキル低い人が大昔に作った規約かもしれないし
例外は復旧可能かつ復旧したいものだけキャッチして対処
それ以外はアスペクトでまとめて処理すればいいよ
スキル低い人が大昔に作った規約かもしれないし
例外は復旧可能かつ復旧したいものだけキャッチして対処
それ以外はアスペクトでまとめて処理すればいいよ
529デフォルトの名無しさん (ワッチョイ 4b63-peSw)
2019/04/27(土) 09:11:45.63ID:ibduGkrL0 コンストラクタで例外がってC+出身者みたいだな
530デフォルトの名無しさん (ワッチョイ 852f-jluM)
2019/04/27(土) 09:25:13.44ID:YyIkYDM+0 >>529
.NET Frameworkクラスもコンストラクタで例外投げるのに?
.NET Frameworkクラスもコンストラクタで例外投げるのに?
531デフォルトの名無しさん (アウアウエー Sa13-iwjh)
2019/04/27(土) 09:26:49.68ID:k66IsG4/a >>529
C++のその説は迷信だけど、C#では事実としてawaitができないという重大な制約があるからなあ
コンストラクタで例外を投げてはいけないわけではないが、そもそも例外を投げる可能性のあるような処理をコンストラクタでやらせることができるケースが少ないのは間違いない
C++のその説は迷信だけど、C#では事実としてawaitができないという重大な制約があるからなあ
コンストラクタで例外を投げてはいけないわけではないが、そもそも例外を投げる可能性のあるような処理をコンストラクタでやらせることができるケースが少ないのは間違いない
532531 (アウアウエー Sa13-iwjh)
2019/04/27(土) 09:33:56.80ID:k66IsG4/a もちろん、ArgumentNullExceptionのようにバグを検出してアプリを落とすことを目的とする例外は別だよ
そういうのを除けば、例外を投げうる処理ってのはだいたいIOを含んでいてawaitが必要になるケースが多い
そういうのを除けば、例外を投げうる処理ってのはだいたいIOを含んでいてawaitが必要になるケースが多い
533デフォルトの名無しさん (アウアウエー Sa13-mEZ1)
2019/04/27(土) 09:36:37.55ID:yyWoHVeQa いまだにオブジェクト倶楽部のをベースにしたC#コーディング規約なのかな
10年くらい前の時点でも悪評ぷんぷんだったのにどれだけ時代遅れなことしてるんだ
コーディング規約作ってる奴のスキルが低い/古すぎ/多言語の知識しか持ち合わせてなくて
クソな規約になってることはよくある
コンストラクタで例外吐くのが望ましくないのはC++の話であってC#ではそんなこと全然ない
例外すべて列挙しなきゃいけないのはJavaの話であってC#にもそれを持ち込むのはナンセンス
でも大抵規約のクソさ加減と規約作成者・組織の老害度は比例するんだよな
指摘しても直ることはないだろうから「これはクソなコードだ」と自覚を持ったうえで
規約通りのコードを書くしかない
10年くらい前の時点でも悪評ぷんぷんだったのにどれだけ時代遅れなことしてるんだ
コーディング規約作ってる奴のスキルが低い/古すぎ/多言語の知識しか持ち合わせてなくて
クソな規約になってることはよくある
コンストラクタで例外吐くのが望ましくないのはC++の話であってC#ではそんなこと全然ない
例外すべて列挙しなきゃいけないのはJavaの話であってC#にもそれを持ち込むのはナンセンス
でも大抵規約のクソさ加減と規約作成者・組織の老害度は比例するんだよな
指摘しても直ることはないだろうから「これはクソなコードだ」と自覚を持ったうえで
規約通りのコードを書くしかない
534デフォルトの名無しさん (ドコグロ MM93-r3uF)
2019/04/27(土) 11:46:22.17ID:V1c8eqNrM >>527
それって制御できないって言ってるんだよね?
その時はtry catchで握り潰せばいいんだけど
君はどうなればいいと思ってるの?
ある日例外が起きてアプリが止まっちゃってもそれは時代の流れでしょうがないと思ってるってこと?
それって制御できないって言ってるんだよね?
その時はtry catchで握り潰せばいいんだけど
君はどうなればいいと思ってるの?
ある日例外が起きてアプリが止まっちゃってもそれは時代の流れでしょうがないと思ってるってこと?
535デフォルトの名無しさん (スフッ Sd43-jluM)
2019/04/27(土) 12:00:49.48ID:ASguEO4td >>534
予期せぬ例外が起きたら発生箇所のスタックトレースを表示させてバグ修正に役立てるよ
客もその画面キャプチャを送ってくれる
Execeptionにはそういうデバッグに役立つ情報入ってるからマジ便利だわ
予期せぬ例外が起きたら発生箇所のスタックトレースを表示させてバグ修正に役立てるよ
客もその画面キャプチャを送ってくれる
Execeptionにはそういうデバッグに役立つ情報入ってるからマジ便利だわ
536デフォルトの名無しさん (スップ Sd03-O4pN)
2019/04/27(土) 12:01:52.85ID:reMuF7mTd >>535
客にスタックトレース見せちゃだめw
客にスタックトレース見せちゃだめw
537デフォルトの名無しさん (アウアウエー Sa13-OsmV)
2019/04/27(土) 12:22:00.72ID:yNGf8etVa コンストラクタで例外を出すのが妥当なら出すべきだ
しかし、例外を出すような責務は得てしてファクトリやリポジトリなど外部のクラスが担うことが多い傾向にある
なので正確に言うと、オブジェクトの生成という責務を分離してない汚いプログラムはダメだ、なんだけど
それが誤って拡散した結果、コンストラクタで例外を出すプログラムはダメだ、に拡大解釈されてしまったのだろう
// コレは生成責務が分離されてないからダメだ
class Hoge {
public Hoge(int id) {
var dto = DB.FindHoge(id); // 例外なげる
m_id = id;
m_name = dto.name;
}
// コレは責務が分離されてるからOK
class HogeRepository {
public Hoge Find(int id) {
var dto = m_db.FindHoge(id); // 例外なげる
return new Hoge(id, dto.name); // 実装次第で投げたり投げなかったり
}
// コレもOK 例外投げるが責務としては妥当
class Hoge {
public Hoge(int id, string name) {
if (id < 0) throw new BadHogeFormat("id");
if (UTIL.NotMatch(@"^H\d{8}$", name)) throw new BadHogeFormat("name");
m_id = id;
m_name = name;
}
しかし、例外を出すような責務は得てしてファクトリやリポジトリなど外部のクラスが担うことが多い傾向にある
なので正確に言うと、オブジェクトの生成という責務を分離してない汚いプログラムはダメだ、なんだけど
それが誤って拡散した結果、コンストラクタで例外を出すプログラムはダメだ、に拡大解釈されてしまったのだろう
// コレは生成責務が分離されてないからダメだ
class Hoge {
public Hoge(int id) {
var dto = DB.FindHoge(id); // 例外なげる
m_id = id;
m_name = dto.name;
}
// コレは責務が分離されてるからOK
class HogeRepository {
public Hoge Find(int id) {
var dto = m_db.FindHoge(id); // 例外なげる
return new Hoge(id, dto.name); // 実装次第で投げたり投げなかったり
}
// コレもOK 例外投げるが責務としては妥当
class Hoge {
public Hoge(int id, string name) {
if (id < 0) throw new BadHogeFormat("id");
if (UTIL.NotMatch(@"^H\d{8}$", name)) throw new BadHogeFormat("name");
m_id = id;
m_name = name;
}
538デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/27(土) 13:20:27.71ID:rUmkpmPg0539デフォルトの名無しさん (ワッチョイ 4b63-peSw)
2019/04/27(土) 13:38:48.88ID:ibduGkrL0 C+の話は
C+のコンストラクタとデストラクタの言語仕様をよく理解してない奴の誤解だから
もともと正しくない
C+のコンストラクタとデストラクタの言語仕様をよく理解してない奴の誤解だから
もともと正しくない
540デフォルトの名無しさん (ワッチョイ ad17-KxX0)
2019/04/27(土) 13:43:38.03ID:bs+zTlgP0 >>539
お前はさっきから何の言語の話をしているんだ?
お前はさっきから何の言語の話をしているんだ?
541デフォルトの名無しさん (ワッチョイ 4b63-peSw)
2019/04/27(土) 13:45:42.92ID:ibduGkrL0 話しかけるなゴミが
542デフォルトの名無しさん (アウアウエー Sa13-7ni7)
2019/04/27(土) 13:46:18.87ID:vrUpwJdGa ダメも糞も引数が不適切なら例外投げるしかないねそもそもw
もちろん(注意喚起とか)何らかの意図を持ってあえてコンストラクタではなく
ファクトリーメソッドやTryCreateXxxxにする方法もあるけど、
少なくとも誰が考えても引数が不適切なら例外発生が予見できるなら
コンストラクタで例外投げて何も問題ない
もちろん(注意喚起とか)何らかの意図を持ってあえてコンストラクタではなく
ファクトリーメソッドやTryCreateXxxxにする方法もあるけど、
少なくとも誰が考えても引数が不適切なら例外発生が予見できるなら
コンストラクタで例外投げて何も問題ない
543デフォルトの名無しさん (ワイーワ2 FF93-drJF)
2019/04/27(土) 16:53:30.48ID:hssASZhyF デストラクタで例外吐くのはあり?
544デフォルトの名無しさん (ワッチョイ 8563-Neyz)
2019/04/27(土) 16:57:52.36ID:krlg75LI0 どこならokとかngとかじゃなくて例外が発生したなら吐かなきゃ駄目
例外の前提を変えちゃ駄目
例外の前提を変えちゃ駄目
545デフォルトの名無しさん (ブーイモ MM79-HJzg)
2019/04/27(土) 19:59:50.65ID:UyCSNWt+M546デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/27(土) 20:00:47.02ID:rUmkpmPg0 >>543
なし
なし
547デフォルトの名無しさん (ワッチョイ 232f-K6Yl)
2019/04/27(土) 20:39:48.83ID:ucBEJWSU0 デストラクタって解放し忘れたアンマネージドリソースの解放をするためにある奴でしょ?
ただそれだけの処理に例外とか要る?
ただそれだけの処理に例外とか要る?
548デフォルトの名無しさん (ワッチョイ 4b7b-7MPY)
2019/04/27(土) 20:43:57.48ID:xE/0VH9u0 >>547
どんな想定かわからないし入れたい人は入れればいいんじゃないの
どんな想定かわからないし入れたい人は入れればいいんじゃないの
549デフォルトの名無しさん (ワッチョイ 232f-K6Yl)
2019/04/27(土) 21:09:36.81ID:ucBEJWSU0 C#のデストラクタは実行タイミングが不明な上に
他でキャッチできないからそのままクラッシュする事になるが
それが目的なら
他でキャッチできないからそのままクラッシュする事になるが
それが目的なら
550デフォルトの名無しさん (ワッチョイ 8563-Neyz)
2019/04/27(土) 22:32:08.58ID:krlg75LI0 デストラクタであろうと例外が発生したなら吐くべき
デストラクタで例外なら大体最終的にアプリ落とす結果になるだろうけど
普通に設計すりゃまずデストラクタで例外が必要にはならんとは思うが
デストラクタで例外なら大体最終的にアプリ落とす結果になるだろうけど
普通に設計すりゃまずデストラクタで例外が必要にはならんとは思うが
551デフォルトの名無しさん (ワッチョイ 2361-KxX0)
2019/04/28(日) 07:43:44.94ID:Rwl5KJzI0 そりゃどこでも例外が出りゃ吐くべきだろ。デストラクタで出た例外は握りつぶせとでもいうのかよ
552デフォルトの名無しさん (アウアウエー Sa13-OsmV)
2019/04/28(日) 08:59:56.68ID:vQlivpSSa デストラクタの例外は運用に入ったらログ吐いて握り潰すしかない
開発中にどれだけ発見しきれるかが勝負
開発中にどれだけ発見しきれるかが勝負
553デフォルトの名無しさん (ブーイモ MMa9-HJzg)
2019/04/28(日) 09:42:23.56ID:3t4t6vYZM 馬鹿しかいないのかな
デストラクタで例外をキャッチすべきかじゃなくて
デストラクタで例外を投げるべきかだろ
デストラクタで例外をキャッチすべきかじゃなくて
デストラクタで例外を投げるべきかだろ
554デフォルトの名無しさん (ブーイモ MMa9-HJzg)
2019/04/28(日) 09:48:33.86ID:3t4t6vYZM どうみても例外をデストラクタで握りつぶすなんて話はしてない
デストラクタで挙動がおかしな場合そこから自前で例外を投げるかどうかだろ
どうしてこんな前提すらわからないのか?
デストラクタで挙動がおかしな場合そこから自前で例外を投げるかどうかだろ
どうしてこんな前提すらわからないのか?
555デフォルトの名無しさん (ワッチョイ 232f-K6Yl)
2019/04/28(日) 10:20:38.37ID:ddGaHMPJ0 デストラクタで例外投げるのは出来るけど
デストラクタの呼び出し元はファイナライザースレッドになる故
デストラクタ以外の場所でキャッチして
ログ記録したりは出来ないが、よろしいか?
デストラクタの呼び出し元はファイナライザースレッドになる故
デストラクタ以外の場所でキャッチして
ログ記録したりは出来ないが、よろしいか?
556デフォルトの名無しさん (ワッチョイ 232f-b8jC)
2019/04/28(日) 10:52:59.00ID:F7dfQde00 ところで、C#ってコンストラクタで例外吐いたとき、インスタンスは生成されて戻されるの?
そのインスタンスのデストラクタは(実装してればどこかで)実行されるの?
そのインスタンスのデストラクタは(実装してればどこかで)実行されるの?
557デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/28(日) 14:01:09.54ID:Cfig35XD0558デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/28(日) 14:02:16.88ID:Cfig35XD0559デフォルトの名無しさん (ワッチョイ 8563-Neyz)
2019/04/28(日) 14:33:26.09ID:18CJ+0uF0 ファイルクローズなんてデストラクタの仕事じゃないからクラス設計が間違ってる
もしそうせざるを得ない理由があるならアプリ終了するだけ
アプリ終了されて困るなら正しくクラス設計すればいい
もしそうせざるを得ない理由があるならアプリ終了するだけ
アプリ終了されて困るなら正しくクラス設計すればいい
560デフォルトの名無しさん (スププ Sd43-jluM)
2019/04/28(日) 15:52:04.90ID:QPV4rne2d >>559
例えばの話してんだからそこに文句付けるのはお門違い
例えばの話してんだからそこに文句付けるのはお門違い
561デフォルトの名無しさん (スプッッ Sd03-Neyz)
2019/04/28(日) 17:06:19.94ID:lUhOqb6wd >>560
例えだろうがなんだろうが結論は同じ
例えだろうがなんだろうが結論は同じ
562デフォルトの名無しさん (ラクッペ MMe1-peSw)
2019/04/28(日) 17:07:43.10ID:3i1J1gafM 年甲斐もなく疲れた
お前らこんな所で何をやってんだ青瓢箪か?
お前らこんな所で何をやってんだ青瓢箪か?
563デフォルトの名無しさん (ワッチョイ 2301-HJzg)
2019/04/28(日) 17:32:00.19ID:+oA/oQuO0 ここでは例外の話でドンパチ
よくのぞいてるVBAスレでもOn Errorの話でドンパチ
どちらを見てるのかわからなくなってくる
よくのぞいてるVBAスレでもOn Errorの話でドンパチ
どちらを見てるのかわからなくなってくる
564デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/28(日) 17:38:04.38ID:Cfig35XD0565デフォルトの名無しさん (アウアウウー Sae9-HJzg)
2019/04/28(日) 18:13:29.08ID:KKCCRPTWa デストラクタの中でファイル操作やクローズするのは間違ってるな
そこで例外でたらどうしようもない
ログ取るのも同じ
そこで例外でたらどうしようもない
ログ取るのも同じ
566デフォルトの名無しさん (ワッチョイ cbda-KxX0)
2019/04/28(日) 18:25:38.64ID:kK/njqra0 メンバ変数を仕様上どうしてもDBから引っ張ってくるデータで初期化するしかなく、
コンストラクタ内でDB処理異常時に例外を吐く処理があります。
この場合コンストラクタ内では何もせず、インスタンス生成後にInit()のようなメソッドを
呼び出してもらうほうが使う側は楽でしょうか?
コンストラクタ内でDB処理異常時に例外を吐く処理があります。
この場合コンストラクタ内では何もせず、インスタンス生成後にInit()のようなメソッドを
呼び出してもらうほうが使う側は楽でしょうか?
567デフォルトの名無しさん (アウアウエー Sa13-mEZ1)
2019/04/28(日) 18:31:50.14ID:uWFo9H7Wa そもそもC#でデストラクタに処理を書くこと自体が基本ありえないと思うんだけど・・・
リソースの解放なら(まともな構造のソースであれば)Dispose時に済ませるだろうし
デストラクタにわざわざ処理を書いて、しかもその処理が例外を引き起こすパターンって
具体的にどんなのがありうるんだ?
リソースの解放なら(まともな構造のソースであれば)Dispose時に済ませるだろうし
デストラクタにわざわざ処理を書いて、しかもその処理が例外を引き起こすパターンって
具体的にどんなのがありうるんだ?
568デフォルトの名無しさん (スプッッ Sd03-Neyz)
2019/04/28(日) 18:32:37.29ID:lUhOqb6wd >>566
コンストラクタで例外を吐いてください。
コンストラクタで例外を吐いてください。
569デフォルトの名無しさん (スプッッ Sd03-Neyz)
2019/04/28(日) 18:34:32.85ID:lUhOqb6wd >>564
ぜひ具体的に例示していただきたい。
ぜひ具体的に例示していただきたい。
570デフォルトの名無しさん (アウアウエー Sa13-jWJP)
2019/04/28(日) 18:39:48.98ID:e0sCdFMHa571デフォルトの名無しさん (ラクッペ MMe1-peSw)
2019/04/28(日) 18:45:37.21ID:3i1J1gafM 器が小さい奴はすぐ引っ込みが着かなくなるから困ったものだ
572デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/28(日) 18:46:32.36ID:Cfig35XD0 >>569
MSがデストラクタからDispose呼んでるんだがw
// Free any unmanaged objects here.
で例外が発生するケースをどう扱うのか具体的に添削してやってくれ
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/implementing-dispose
MSがデストラクタからDispose呼んでるんだがw
// Free any unmanaged objects here.
で例外が発生するケースをどう扱うのか具体的に添削してやってくれ
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/implementing-dispose
573デフォルトの名無しさん (アウアウエー Sa13-OsmV)
2019/04/28(日) 18:47:40.42ID:vQlivpSSa574デフォルトの名無しさん (スプッッ Sd03-Neyz)
2019/04/28(日) 18:56:32.95ID:lUhOqb6wd575デフォルトの名無しさん (アウアウエー Sa13-7ni7)
2019/04/28(日) 19:02:39.46ID:kMBz0MBMa576デフォルトの名無しさん (スプッッ Sd03-Neyz)
2019/04/28(日) 19:02:50.34ID:lUhOqb6wd どんなに丁寧に処理したって完全に例外を対応するなんてことは不可能
599の最後でちゃんとやれば良いokみたいに書いちゃったのが良くなかった
ちゃんとやったって無理なことはある
599の最後でちゃんとやれば良いokみたいに書いちゃったのが良くなかった
ちゃんとやったって無理なことはある
577デフォルトの名無しさん (アウアウウー Sae9-HJzg)
2019/04/28(日) 19:06:45.39ID:KKCCRPTWa >>575
その使い方はダメだと思うけど…
その使い方はダメだと思うけど…
578デフォルトの名無しさん (スプッッ Sd03-Neyz)
2019/04/28(日) 19:09:47.55ID:lUhOqb6wd >>576
599じゃなくて559でした
599じゃなくて559でした
579デフォルトの名無しさん (アウアウエー Sa13-7ni7)
2019/04/28(日) 19:10:36.56ID:kMBz0MBMa580デフォルトの名無しさん (アウアウウー Sae9-HJzg)
2019/04/28(日) 19:17:31.79ID:KKCCRPTWa 無関係だけど一応答えるよ
フェイルセーフって言うのは失敗しても安全な状態に落ち着くこと
例えば信号が壊れても青信号になるんじゃなくて赤信号になるような設計
ファイルクローズは別にフェイルセーフの概念と関係ない
tryのfinallyはフェイルセーフじゃないよ
フェイルセーフって言うのは失敗しても安全な状態に落ち着くこと
例えば信号が壊れても青信号になるんじゃなくて赤信号になるような設計
ファイルクローズは別にフェイルセーフの概念と関係ない
tryのfinallyはフェイルセーフじゃないよ
581デフォルトの名無しさん (ワッチョイ 2301-4ufv)
2019/04/28(日) 19:20:35.61ID:Cfig35XD0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- ヨッシー、ヘイホー、テレサ ←こいつらwwwwwwwww
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- くそしてかがやけ
- テレビ「地震!津波!高いところへ逃げて!」
