- 1 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 19:00:56.93 ID:Y4203ffV0.net]
- 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part131 mevius.5ch.net/test/read.cgi/tech/1504861931/ ■関連スレ C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net mevius.5ch.net/test/read.cgi/tech/1492843013/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 792 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 17:12:38.78 ID:oE5JXb4z0.net]
- 配列でそのまま渡せばいいのにわざわざ変な方法使うとか
>>766 C#から渡すときはvoid test(int[] aa);でいいんだよ。Visual Studio以外なら知らん >>772>>773 アンマネージ側で定義されていない構造体を勝手に作って渡すって考え方がおかしい アンマネージ側で要求されている引数の形式に合わせるのが基本だろ
- 793 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 17:42:00.04 ID:wZG1ntZl0.net]
- ググって最初のほうに出てくるサイトで char * 以外は全てマーシャってるので
てっきり IntPtr を駆使すると思い込んでました。 配列じゃないポインタ渡しは ref/out で何の造作もなく出来ました。 (マーシャル関連のコードを大量に書いていたのが馬鹿らしくなるほど) んで配列ですが // C++(x86) extern "C" __declspec(dllexport) void test(long a[2]); // C# [DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)] static extern void test(out int[] a); int[] a = new int[2]; test(out a); で、バイオレーションエラー出ちゃいます。。。
- 794 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 17:52:53.60 ID:oE5JXb4z0.net]
- >>776
C++側からC#にoutする形で返したいのならC#からポインタにして渡す そのコードのC#側のout(ref)だと変な動きにしかならない。消せ
- 795 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 18:01:00.66 ID:wZG1ntZl0.net]
- うわぁ、ありがとうございます。
先方で値が書き換わる場合には ref/out を付けないといけない (付けなかったら配列だろうが値渡しになる) だと先入観で思い込んでました。 配列だったらC++と同じくポインタ渡しになるんですね! // C# [DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)] static extern void test(int[] a); int[] a = new int[2]; test(a); で、うまくいきました。 (C++側で設定された値が戻ってきた)
- 796 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 18:34:34.93 ID:OVuNv67Pa.net]
- >>778みたいな場合、アンマネージド関数の宣言の仮引数にOutAttributeを付ける必要が
あるのかないのか、MSDN読んでもいまいちよく分からん https://msdn.microsoft.com/ja-jp/library/75dwhxf7(v=vs.90).aspx を読むとBittableな型の一次元配列の場合不要のようにも思えるが、 https://msdn.microsoft.com/ja-jp/library/hk9wyw21(v=vs.90).aspx のサンプルでは属性がついてる
- 797 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 22:14:18.55 ID:FJPOLiu40.net]
- >>779
そのリンク先に書いてあるぞ これらの型は、呼び出し元と呼び出し先が同じアパートメントに属する場合には、In/Out パラメータとしてマーシャリングされるように見えることがあります。 ただし、そのような型は実際には In パラメータとしてマーシャリングされるため、引数を In/Out パラメータとしてマーシャリングする必要がある場合には、InAttribute 属性と OutAttribute 属性を適用する必要があります。 Outがないと保証されない
- 798 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 22:48:20.45 ID:uoctVHYW0.net]
- >>778
ref/outは書き換え云々というより変数の参照で初期化の必要があるかどうか、P/Invokeでは構造体くらいにしか使わぬ 配列は参照型なので参照の参照になるし、そのままでもオブジェクトヘッダ+要素数を含むのでネイティブ配列へはちょっとズラしている >>779 上のページに>>780の通りずばり書いてないか?コピーと固定 # 書式指定された Blittable クラスのメモとかにも。そういう事ではなく? 既定のマーシャリング動作を理解し、MarshalAs属性とIn/Out属性を駆使すれば、Marshalメソッドの出番はあまりなくなる Marshal.UnsafeAddrOfPinnedArrayElementとかもArrayWithOffsetというお誂え向きな構造体がある 手動でIntPtrを捏ね回すのが有効なケースもあるが。ちぃと古いけど↓の記事はよく纏められている https://msdn.microsoft.com/ja-jp/library/ff647812.aspx#scalenetchapt07_topic4
- 799 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 22:54:42.83 ID:vimPIuS6M.net]
- GCがうざいならstackallocを使う手もあるよ
unsafeになるけど、マネージ配列のマーシャリング使ったとしても境界外へアクセスしたら普通にクラッシュするんだし むしろ危険な操作は明らかに危険とわかったほうがマシ
- 800 名前:デフォルトの名無しさん mailto:sage [2017/11/02(木) 23:07:34.82 ID:OVuNv67Pa.net]
- >>780-781
レスどうも よく分からない箇所は結局、>>780に引用してある部分の >同じアパートメントに属する場合には この但し書きかな。 同じアパートメントって何だ? >>778のケースでは結局Out属性なしでも期待通り動くみたいだけど、 逆にBittableであっても明示的にOutを付けないといけないのはどういう 場合なんだろうか
- 801 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 01:31:28.84 ID:zjyHgUY90.net]
- >>782
stackallocはスタックを理解していなければ危険すぎないか、少量で確保速度が最重要ならアレだけど unsafeポインターを使うならfixedでも境界チェックは外れるし、そのあたりで… >>783 アーその辺はCOMの話かな、COMマーシャリングが挟まれると固定では済まなくなるという https://msdn.microsoft.com/ja-jp/library/eaw10et3.aspx#marshaling_and_com_apartments 具体例については…直接COM使った経験がC++でちょろっとしか無いのでわっかんないや(無能
- 802 名前:デフォルトの名無しさん [2017/11/03(金) 04:43:40.14 ID:ZqwqQq4y0.net]
- Parallelの動きがわからん
10個のZIPを同時に解凍する処理するとして Parallel.Forで実行したらどうなる? ちなcore i7 エラー?
- 803 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 09:51:59.78 ID:wXWM393Ar.net]
- 1.5倍(適当)くらい速くなる
- 804 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 10:02:10.84 ID:YKGzMcXY0.net]
- >>785
同時実行数はCPUのスレッド数だから8個同時に展開して、2個は待ちになるんじゃね CPUより展開後ファイルサイズによってはHDD書き込みがネックになりそうな気もするけど
- 805 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 11:00:02.96 ID:QTbHfBOQ0.net]
- >>787
オイ!
- 806 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 15:48:21.85 ID:m874gEkx0.net]
- >>786
1.5ってすごくいいよ >>787 動き知りたいんよ どうなるか
- 807 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 15:52:47.69 ID:OoLmNkMra.net]
- 何を期待してるか知らないけどやればいいじゃないか
- 808 名前:デフォルトの名無しさん [2017/11/03(金) 17:10:18.04 ID:bRMk/YPf0.net]
- c#で画像の黄色部分だけを白にして残りを黒にする様なことはできますか?
- 809 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 17:32:15.18 ID:tw8puOLsM.net]
- >>791
ProcessでImageMagick呼べば一瞬でできる 似た色はどこまで許容するのかとかいちいち個別に作ってたらキリがない
- 810 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 18:22:36.00 ID:QTbHfBOQ0.net]
- DataTable dt = new DataTable();
bool foofunc(ref DataTable dt) { ・・・・ adapter.Fill(dt); こんなコード見たんだが何かメリットあるのか?
- 811 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 18:28:01.91 ID:tw8puOLsM.net]
- >>793
それ書いた奴が参照型を理解してないんだと思う 何の意味もないので絶対に真似してはいけない
- 812 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 18:37:57.11 ID:QTbHfBOQ0.net]
- >>794
c#歴10年のヤツのコードなのだ。 当然foofunc内でtry/catchがあり戻り値にエラー有無が返る。 愚痴ってスマヌ。
- 813 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 18:41:43.76 ID:lrZzjWeI0.net]
- >>792
そういうのって、C#でって言うのかな。
- 814 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 19:35:14.12 ID:Xp/sMfFK0.net]
- >>791
最低限の要件だけ勝手に解釈してこんな感じ https://ideone.com/j4HMm8
- 815 名前:デフォルトの名無しさん [2017/11/03(金) 19:43:53.45 ID:ZqwqQq4y0.net]
- imagemagickってソースに組み込める何か提供してるん?
- 816 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 19:44:48.34 ID:EmHaDWp+0.net]
- 大昔にマスク画像を作っていたのを思い出した
- 817 名前:797 mailto:sage [2017/11/03(金) 20:02:57.12 ID:Xp/sMfFK0.net]
- ついでに補足しておくとMarshal.ReadInt32でなくMarshal.Copyでバイト配列で4バイトずつ読めば
Blue,Green,Red,Alphaが取れるから許容範囲設定とかしたかったらそっちで
- 818 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:15:49.55 ID:WHWgtK+kr.net]
- 経験年数と理解度?にどれだけの相関関係があるのか
疑問が生じている今日この頃
- 819 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:20:24.80 ID:aVxxhWTE0.net]
- 相関関係はある
但し個人差は大きい
- 820 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:26:05.42 ID:QTbHfBOQ0.net]
- >>798
https://www.imagemagick.org/script/develop.php
- 821 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 22:49:49.36 ID:om2fc3b00.net]
- >>793-794
refで渡せば、呼び出し先の関数で、呼び出し元の変数のインスタンスを変更できる これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて なんの意味もないわけではない
- 822 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 00:09:44.98 ID:3cC+jj+w0.net]
- >>793のケースで意味がなさそうって>>793,794は言ってるのに、
>これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて とか一般論を言い出してそのつっこみよくわからん。
- 823 名前:デフォルトの名無しさん [2017/11/04(土) 01:46:45.24 ID:qZ8I6rgd0.net]
- >>797
ありがとうございます。 ほぼ真っ黒になってしまったのでRGB値で範囲指定できる様にやってみます。
- 824 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 04:11:36.08 ID:MnNwpnC60.net]
- >>804
君も参照型を理解してないね。
- 825 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:41:31.55 ID:sTeHaJ1X0.net]
- >>807
この話の流れに>>804がふさわしいかどうかはおいとくとして... > 君も参照型を理解してないね。 ちょっと説明してみ
- 826 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 09:02:47.97 ID:5h9DYzfZ0.net]
- DataTable dt = new DataTable();
bool foofunc(ref DataTable dt) { DataTable dt = new DataTable(); ・・・・ adapter.Fill(dt); 「なんの意味もないわけではない」のコードにはなったが 更に輪をかけた馬鹿コードに進化させてみた。 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
- 827 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 09:17:38.08 ID:5h9DYzfZ0.net]
- DataTable dt = new DataTable();
bool foofunc(ref DataTable dt) { dt = new DataTable(); ・・・・ adapter.Fill(dt); 間違えてたw
- 828 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 09:19:39.29 ID:flyq3nv80.net]
- それじゃただのoutじゃんrefの意味じゃないじゃん(難癖
- 829 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 09:48:23.86 ID:5h9DYzfZ0.net]
- >>811
そう、参照型にrefは無意味なのです。 参照型が分かってないよりこのコードが問題なのは、 検査結果を引数に返して実行エラーの有無を戻り値で返していること。 参照型も理解していないが例外処理はもっと理解していない糞野郎のコード。
- 830 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 09:51:19.52 ID:5h9DYzfZ0.net]
- ×検査結果
- 831 名前:
○検索結果 スマン、寝ぼけてるわ [] - [ここ壊れてます]
- 832 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:16:12.92 ID:q474DaJy0.net]
- >>812
Dictionary.TryGetValue()とかあるし、そこはケースバイケースかな。 参照型にref付けてるくらいだから、何も考えてないのかも知れないけど。
- 833 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:20:08.20 ID:5h9DYzfZ0.net]
- >>814
public bool TryGetValue ( TKey key, out TValue value ) refじゃなくてoutやないかい!
- 834 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:29:08.52 ID:q474DaJy0.net]
- そうだった。>>811とまざった。
こっちも寝ぼけてるねw
- 835 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:29:22.28 ID:fyiwYE9E0.net]
- つまり
>>793と DataTable dt = new DataTable(); bool foofunc(DataTable dt) { ・・・・ adapter.Fill(dt); とは同じ結果になると
- 836 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:37:55.56 ID:q474DaJy0.net]
- >>815
まぁ、outにする必要はあるけど、 「検査結果を引数に返して実行エラーの有無を戻り値で返していること」 自体に問題はないな。
- 837 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:38:05.17 ID:OcSSsXSe0.net]
- この手のメンバ変数に検索結果をセットする時はこんな感じにして、例外処理は基本呼出側に任せちゃうんだけど問題あるのかね?
前はエラーコードのEnum返してたけど、エラーケースの殆どが例外処理で扱われる物ばかりだったので止めちゃった DataTable dt = new DataTable(); Void SetHoge(DataTable dt){ ・・・・ adapter.Fill(dt); }
- 838 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 10:56:19.06 ID:q474DaJy0.net]
- >>819
それで良いと思う。 上のみたいに成功したかどうかを返り値で返すのは、 正常運用の範囲内で失敗する場合があるのを想定している場合。
- 839 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 12:23:07.70 ID:5h9DYzfZ0.net]
- >>819
自分ならこうするけど。 DataTable GetHoge() { var dt = new DataTable(); ・・・・ adapter.Fill(dt); return dt; }
- 840 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 13:59:17.12 ID:dOyJdliUp.net]
- >>821に1票
- 841 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 14:56:00.76 ID:ePC4mkkA0.net]
- 参照型にrefは無意味って言ってるやつは
呼び出し元変数のインスタンスを変更「できる」 ってことをどう評価してるのか
- 842 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:15:02.21 ID:Vg1Izipf0.net]
- 型がわからない変数と同じ型の変数を用意したいときってなんか記述方法ある?
型を調べるとかじゃなくてプログラミング的に解決する手法あったら教えて
- 843 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:24:28.88 ID:m6ZusNHm0.net]
- 型引数で解決できるならそれで
- 844 名前:片山博文MZ mailto:sage [2017/11/04(土) 15:24:47.55 ID:Yg7qqeZtd.net]
- >>824
ヴァーか?
- 845 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:41:42.41 ID:WuSfeAlZa.net]
- >>824
var y = 謎の変数x; っていうか、たぶん何か勘違いしてると思うw 「型が分からない変数」っていうのは実行時に型が決まるって意味なんだろうけど、 変数の型は静的に(コンパイル時に)確定しているのでそれはありえない それとも匿名型のことを言ってる?
- 846 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:49:14.84 ID:jl0ZLZ4q0.net]
- dynamic型ならコンパイル時の型チェックは行なわれず実行時に解決するね
- 847 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:52:54.75 ID:WuSfeAlZa.net]
- >>828
いや、「変数の型」は静的に決まるでしょ。自分でdynamic型って書いてるじゃんw
- 848 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:55:26.19 ID:tIYipYwe0.net]
- >>824
var x1 = new X(); var x2 = Activator.CreateInstance( x1.GetType() );
- 849 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:13:39.02 ID:sTeHaJ1X0.net]
- >>823
まあそれが必要なケースがほとんどないし
- 850 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:19:15.36 ID:2EEZfJvra.net]
- 引数のnullチェックして必要ならインスタンスをnewしてつけられる
- 851 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:41:13.06 ID:tIYipYwe0.net]
- バットノウハウっぽい
- 852 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:43:39.78 ID:FXv0ObyH0.net]
- >>833
バットは関係ないやろ
- 853 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:53:42.21 ID:/YBu7JsUM.net]
- >>832
出来るが引数がnullな時点でArgumentException飛ばすんで実用価値はほぼないな。
- 854 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 16:58:31.41 ID:tIYipYwe0.net]
- >>834
関係ないな。しょぼい誤字だ。 >>824 何をやりたいか分からないが、ジェネリックメソッドでは目的に沿わないかな。
- 855 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 17:05:47.97 ID:83ZjnaGFa.net]
- javascriptみたいなのを想定してるんだろうけど
まあ普通はない
- 856 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 17:44:10.96 ID:SXZaCuwQ0.net]
- ベッドノウハウ
しかし俺は未経験
- 857 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 17:51:46.51 ID:sTeHaJ1X0.net]
- >>832
だからそんなことが必要になったことがどれだけあるんだ?
- 858 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:10:38.00 ID:WuSfeAlZa.net]
- なんかしょうもないことで争ってるけど、>>823の方が正しいね
エイリアスの機能がいらないならそもそもrefってキーワードも用意されてないでしょ 負け惜しみでくだらない意地を張るのは子供っぽいよ
- 859 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:13:38.30 ID:wTKOoVxtr.net]
- ペットノウハウ
ボトルじゃないよ
- 860 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:17:18.92 ID:wTKOoVxtr.net]
- MSらしく反則技が用意してあるだけ
初心者は使わない方が無難 返り値が二つ以上欲しい時は今なら名前付タプルを使う
- 861 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:26:59.70 ID:flyq3nv80.net]
- 返値代わりに使うのはoutだし今ならって言ってるとおり昔はなかったんだし
ちょっと何言ってるのか分からない
- 862 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:35:14.75 ID:sTeHaJ1X0.net]
- >>840
> エイリアスの機能がいらないならそもそもrefってキーワードも用意されてないでしょ ??? refって参照型じゃなくても使えるんだが... 参照型にrefを使うことがほぼないだろって話だと思うけどな > 負け惜しみでくだらない意地を張るのは子供っぽいよ 自己紹介は要らんよ w
- 863 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:40:28.61 ID:WuSfeAlZa.net]
- >>844
意味が分からない 変数の値の利用と書き換えの両方が必要かどうかは、その変数の型が 参照型であるか値型であるかは関係ない。 何を言ってんの? しかし、いい歳こいて幼稚な奴って嫌だねほんと
- 864 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:43:37.92 ID:OcSSsXSe0.net]
- >>842
名前付きタプル使いたいけどVS2013限定という変な縛りに囚われているわ フレームワーク縛りは判るけど、IDEのバージョンを縛る理由ってなんなんだろう
- 865 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 18:58:38.30 ID:3Qk/5QRnM.net]
- 古いコンパイラでビルドできなくなるだろ
俺個人としては大した問題ではないと思うけど、大した問題だと考える人がいるのは普通に理解できるぞ
- 866 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 19:12:51.54 ID:sTeHaJ1X0.net]
- >>845
> 変数の値の利用と書き換えの両方が必要かどうかは、その変数の型が > 参照型であるか値型であるかは関係ない。 えっ? 普通にググればrefが値型と参照型でどう使われてるかわかると思うんだが... 引っ込みつかなくなってるのかな > しかし、いい歳こいて幼稚な奴って嫌だねほんと また自己紹介ですか? w
- 867 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:19:58.00 ID:m6ZusNHm0.net]
- 幼稚呼ばわりが得意なのはかの例外を握り潰す人だが
- 868 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:22:16.23 ID:m6ZusNHm0.net]
- ようするにキチガイなので相手にしなくてよいという話
- 869 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:45:43.86 ID:5h9DYzfZ0.net]
- >>840
とりあえず、refは値型以外には使い道が無いのは確定で。
- 870 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:48:54.35 ID:wTKOoVxtr.net]
- >>846
2017?
- 871 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:49:38.51 ID:mF4CZaPha.net]
- >>848
マジモンかよ 俺個人が使うか、あるいは一般に多用されるかどうかはともかく、 参照型であろうと変数の値(つまり参照)そのものを書き換えたいケースは存在すると思われる。 たとえばStringのようなイミュータブルな型や配列の長さのように変更できない要素を 持つ型の場合、元の値を利用しつつそれを加工した値を返すにはrefを使うしかない
- 872 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:50:11.25 ID:jl0ZLZ4q0.net]
- 最近見たrefはBindableBaseの中だったな、ref Tとかジェネリックの場合
普段は使わないね
- 873 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:08:51.42 ID:uh9vgcan0.net]
- 議論ごっこやりたいのなら
ふらっと C#,C♯,C#(議論用) mevius.2ch.net/test/read.cgi/tech/1469538912/ で好きなだけやってくれ。ワッチョイもないから
- 874 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:14:23.59 ID:5h9DYzfZ0.net]
- 意味もなく
try { ・・・ { catch {} や try { ・・・ { catch (Exception ex) { throw ex; } するヤツってアフォですか? お願いだから辞めてください。
- 875 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:16:19.73 ID:mF4CZaPha.net]
- >>856
プログラマがそこで例外が発生しうることを認識してそのコードを書いていることを 明示する意味はあるよ。 >>851といい、ちょっと単細胞過ぎないか?
- 876 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:28:09.69 ID:sTeHaJ1X0.net]
- >>850
了解 >>853を見る限りおまえの言う通りだな >>851 さすがにそれは極論過ぎ
- 877 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:30:25.68 ID:VAjFkczd0.net]
- >>857
え?
- 878 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:49:38.46 ID:FXv0ObyH0.net]
- >>857
c#で>>856やるとそこまでのスタックトレース消し去ることになるんだけど正気?
- 879 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:49:52.84 ID:jdRJf/Av0.net]
- ファイルが読めない程度で例外返すクラスとか一旦握り潰して動作を変えたい
- 880 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 21:53:09.24 ID:J+hizfOLd.net]
- >>861
c#使うのやめた方がいいな
- 881 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:02:23.28 ID:5h9DYzfZ0.net]
- >>862
go言語が例外処理の機能を無くした理由の1つは、大半のプログラマーが例外処理を正しく扱えないから。 本当にそう思うよ。
- 882 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:06:52.22 ID:mF4CZaPha.net]
- >>860
まあ後者はたしかに普通やらないと思う。 ただ、例外情報なんて必ずしも常に必要とは限らない。
- 883 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:07:27.03 ID:/B23IXM6M.net]
- >>861
関数の返り値でエラー処理したい人?
- 884 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:09:09.61 ID:KEPGzX0z0.net]
- >>863
C#使うのやめてGo使った方がいいな
- 885 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:12:09.30 ID:mF4CZaPha.net]
- >>865
TryXXXなんてのがあるように、そもそも成功したかどうかしか関心がない場合もあるでしょ
- 886 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:12:58.59 ID:5h9DYzfZ0.net]
- >>866
Go言語もまともには扱えないと思う。
- 887 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:14:37.92 ID:5h9DYzfZ0.net]
- >>867
それは例外でエラーを拾はないでエラー処理をしたい場合。 例外処理は少々重い。
- 888 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:19:20.92 ID:48c6JPwZa.net]
- 例外は便利だよ
変な使い方しなければ
- 889 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:23:38.64 ID:/B23IXM6M.net]
- >例外処理は少々重い。
初回の例外発生の時にその例外クラスがロードされるみたいなんだけど、その事?
- 890 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:40:21.94 ID:FXv0ObyH0.net]
- >>864
常に必要ではないが、それをわざわざ消す必要があるか?
- 891 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:40:24.62 ID:WGNINBFE0.net]
- ファイルを削除や移動する前に、他のソフトで使用中かどうかを調べるのに
R/Wモードでオープンしたときに例外が発生するかしないかで判断するしか無い この処理のときはcatchでfalse返して例外を握りつぶしている
- 892 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 22:56:58.41 ID:mF4CZaPha.net]
- >>872
まあ、たとえ使わなくてもInnerExceptionに食わせて再スローした方がベターだとは思う
|

|