1 名前:デフォルトの名無しさん mailto:sage [2015/07/25(土) 16:14:05.15 ID:I42JqLkf.net] ■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part87 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1427558696/ ■次スレは>>970 が建てる事。 建てられない場合は他を指定する事。
710 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 00:50:30.42 ID:wg5Da8me.net] ListAとListBの中身を1つずつ比較して、ListBの内1つがListAに無かったらそのオブジェクトを追加し 同じものがあれば追加しないと言う機能を作りたいのですが、foreachだと例外が出て、 for文だと無限ループになってしまいどうやっても上手く実装できませんでした。 一体どうすればListの中身を1つずつ比較して問題なく追加する事が出来るのか教えていただけないでしょうか
711 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 00:57:16.45 ID:bwlYR2I5.net] 問題が起こる、最小のコードをアップしなさい
712 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 01:11:01.00 ID:wg5Da8me.net] 色々書き換え続けて最終的にコンパイルすら通らなくなったんですが多分こんな感じです。 if (ListA.Count == 0) foreach (var li in ListA.a) ListB.Add(li); else for(int i=0; i < ListB.Count; i++){ for (int x = 0; x < ListA.Count; x++){ if (ListA.a[x] != ListB.a[i]) ListB.Add(ListA.a[x]); }}
713 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 02:03:56.13 ID:bwlYR2I5.net] for( a: A ) for( b: B ) {
714 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 02:07:01.06 ID:bwlYR2I5.net] 擬似コードですが、これでどうでしょう for( a: A ) { bool found = false; for( b: B ) { if( a == b ){ found = true; break; } } if( !found ){ B.push_back( a ); } }
715 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 02:56:24.98 ID:wg5Da8me.net] よく考えてみたら1つずつ比較してる最中、違った瞬間に追加するってコードになってました。 それで調べたら配列の中を比較するIndexofという機能をついさっき知って実装したところ、上手く動きました。
716 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 04:17:23.94 ID:ljTVrax0.net] ListB = ListB.Union(ListA).ToList();
717 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 07:28:11.84 ID:uHUYRmLo.net] >>698 shared_ptr weak_ptr の使い分けのように仕組みを意識して使わないと システム任せだと無理があるんだよ、SafeHandleを使えば万事解決という訳にはいかない そろそろ諦めなはれ、アンマネージと相互運用したければ覚悟決めるしかねーですw
718 名前:デフォルトの名無しさん [2015/08/25(火) 10:56:12.32 ID:y1FTBoUo.net] アンマネージドとかどういう場面で使うんですか? C言語とかの領域ですよね? 本見てもどういう場面で使うのか乗ってないんですが
719 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 11:03:08.95 ID:aUx99M6r.net] アンセーフ?
720 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 11:33:21.01 ID:Wpti2W5K.net] SafeHandleってサーバーで複数のドメインが1プロセスに同居するような特殊なシステムでない限り何の意味もないんだけどな 使いたがる連中のなかでそれを正しく理解してるのは少ない
721 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 11:43:43.66 ID:lyj94kL0.net] まあ、C#は元々トロイからね、別に頑張って速くしたりするのは無駄だよね?(´・ω・`)
722 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 12:20:15.95 ID:ya7qPQ7D.net] トロイ?ゆうちゃん?
723 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 12:57:13.30 ID:UmUy/CWK.net] >>707 普段コンビニとか外食でメシを食ってるひとが まな板と包丁買ってきて自分で魚をさばくような話 君はずっとグルメガイドを見てればいい
724 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 13:09:56.76 ID:uHUYRmLo.net] Dispose不要なんて自分ルールを広めようとしてもそうはいかないから 早めにルールに従ってDisposeをキチット実行するよう修正しましょう そうしないと後の修正で口から泡を吹く羽目になりますよって話ですw
725 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 13:33:31.83 ID:yb6n8Wdy.net] 死ね単芝
726 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 21:54:59.46 ID:evM6WMfUm] >>710 要所要所をアンセーフにするとかngen使うとかすれば、かなり高速化出来る場合もある。 GCの問題があるから、本当に高速なリアルタイム処理は苦手だけど。
727 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 18:38:02.96 ID:cRNFEmJ6.net] 頭の中がVB6で止まっているのでしょう
728 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 18:40:19.98 ID:cRNFEmJ6.net] VB6に対して失礼でした
729 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 21:16:04.98 ID:11iB37Vu.net] >>698 FromHandleとか逆にハンドルを取得する系はIntPtrしか受け付けてくれないから、不要になった時にうまく解放しないといけないのが割と面倒 理解不足も含めて、メモリリークさせてるサンプルはよく見かける あとは、メインフォームとか静的なイベントに参照にぎられてるとかもちゃんと意識しないと危険
730 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:00:39.66 ID:FzRJlm7d.net] >>706 ,717 個人的にはDisposeを使う方がお行儀がいいのは認める。 ただ、C#の思想としては、「タイミングは規定できないが、解放はシステム側で保証するから、 面倒なことを考えずに具だけに集中しろ」ということなのだと思う。 だから、クラスをきっちり書けば出来そうな気もするし、それに向けて整備していっているはず。 とはいえ、俺はGUI(描画)に使っている程度で、そんなに本格的に使っていない。 だから命中していないだけで、言われているケースがありそうだというのはなんとなく感じる。
731 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:03:49.42 ID:bwlYR2I5.net] >解放はシステム側で保証するから メモリに関してだけはそのとおりですね
732 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:07:38.08 ID:FzRJlm7d.net] >>707 アンセーフはこれ。見にくくなるが速くなる。 www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_021/csharp_abc05.html アンマネージドはVC++の機能で、SSEとかを使いたいときに使う。
733 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:13:15.62 ID:Y9IbSqw2.net] >>720 バカはリソース解放の必要性が理解できないので説明するだけ無駄
734 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:17:53.09 ID:JrnVqkd7.net] >アンマネージドはVC++の機能で、SSEとかを使いたいときに使う。 はぁ…… 何言ってんのこいつ C++から来てなんでも知ってるつもりのバカヤロウじゃん
735 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:41:07.48 ID:bwlYR2I5.net] たぶん句読点の位置がおかしい アンマネージドは、VC++でSEEとか使いたいときに、使う が正解なのかしら 知らんが
736 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:41:34.05 ID:bwlYR2I5.net] SEE → SSE ごめんね
737 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 23:06:00.33 ID:Wpti2W5K.net] >>721 これはアンマネージコードではなくアンセーフコード アンセーフコードもマネージコードには違いない ちなみにこのリンク先の例はunsafeだから速いのではなく、GetPixel/SetPixelのAPIがクソ遅いだけ .NET2.0以降ならLockBitsがあるから一旦配列に丸ごとコピーして処理後に書き戻せばunsafeなんか使わなくても十分に速い
738 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 23:08:27.34 ID:rPHzO56e.net] C++君って先月くらいからいるけど、いつ死ぬの?
739 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 23:29:15.56 ID:uHUYRmLo.net] >>727 が死ねばいいんだよ、お前が一番屑だから というかC++の上がり人はどう考えても一人じゃないだろ 見た感じ多くはゲーム系の人かな
740 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 23:35:33.69 ID:uHUYRmLo.net] GetPixel/SetPixelが遅いというよりも、プロセス間通信が仕組み的に粒度が小さい処理に向いてないという感じかな
741 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 23:42:25.80 ID:87HoKT0r.net] >>721 これはひでえな LockBits使えば十分だろ
742 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 23:44:06.08 ID:IDnYKic2.net] いつの時代の何を解説するためのサンプルかぐらい読めよ...
743 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 23:57:53.14 ID:FzRJlm7d.net] これな。十分速いが、それでも倍違うけどね。 daisy64.blogspot.jp/2009/01/getpixel.html マネージドコードの例は不要だと思って省略した。 実際は#pragma unmanagedと#pragma managedでソース上で関数単位で切り替える。
744 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 00:16:40.27 ID:LkVTB1JB.net] >>732 お前は何を言っているのか そのリンク先の例はunsafeも含めて全部れっきとしたマネージコードだ C++/CLIの#pragma unmanaged (これは本当にネイティブコードになる)とは全く違う
745 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 00:22:51.89 ID:LkVTB1JB.net] >>732 よく見たらこのサンプル意味不明だな r, g, bの値を使ってないから、最適化で消えてると思われる 実質的にはunsafe全く関係なくてMarshalCopyの時間を測ってるだけだね
746 名前:731 mailto:sage [2015/08/26(水) 02:05:24.84 ID:N7Jdy9nG.net] 731内、 × マネージドコード ○ アンマネージドコード 最適化がかかって全部抜けるのならGetPixelのコードが最速になる。 そうなってないんだから、抜けてはいない。
747 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 02:09:45.86 ID:KP8nmGdk.net] メソッド呼び出しが、最適化で勝手に削除されるわけねーだろ 何の副作用が有るか、わかりゃしないのに
748 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 02:13:08.08 ID:KP8nmGdk.net] 分かっていると思うけど、 逆に言えば、メソッド呼び出しが無いのなら、 無駄な計算は最適化で削除されうるってことだぞ
749 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 08:04:18.96 ID:0fCLXGvh.net] 相変わらずレベルの低い話
750 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 08:27:19.17 ID:pUWj3Ef8.net] ああ、思い出した レベル連呼クンって前にもいたよね
751 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 08:29:29.18 ID:gbsTgmpf.net] VB6スレと同じ人達が話してるのかい
752 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 08:59:00.05 ID:DnnAf/8j.net] VB6スレなんてあったっけ
753 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 09:15:42.60 ID:ElP7lUPJ.net] C#精神病院 Part88
754 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 11:18:16.79 ID:dP9T8Aj9.net] >>719 そこまで崇高な理想を持って開発されてるとは思えないが タイミングがわからないおかげで使用中のハンドルが開放される可能性への対策も必要になるし あと、マネージリソースだけじゃなくて、固定したGCHandleを持ってればGCのパフォーマンスへの影響もでかい
755 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 17:11:34.36 ID:qrjLQtVJ.net] DataGridViewでユーザーが列幅を変更する場合列の境界をドラッグ しますが、横スクロールバーが表示される程列数や個々の幅がある 場合に最後の列幅が変更できません。 どのようにマウスで変更するのでしょうか。
756 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 20:08:44.10 ID:N7Jdy9nG.net] >>736 ,736 メソッドの部分は必ず実行され、その後の部分は最適化されているかも、ということで了解した。 LockBits/unsafeの比較は当てにならないね。 異常に速度差があるし、メソッド以外は全部抜けているかも。
757 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 20:16:21.46 ID:N7Jdy9nG.net] >>743 > GCHandle 構造体 > [SecurityPermission(SecurityAction.Demand, UnmanagedCode=true)] > https://msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.gchandle(v=vs.110).aspx なるほど、C#でもdllと接続するとUnmanagedCodeを意識しないと駄目なんだな。 > タイミングがわからないおかげで使用中のハンドルが開放される可能性への対策も必要になるし GC.Collectで起動は出来るみたいだぞ。 GC.SuppressFinalizeというやばそうなものもあるが、GCを止めることは出来ないね。 上記GCHandle例のようにブロックスコープで囲える範囲なら、GC.KeepAliveの方が軽そうだ。 > https://msdn.microsoft.com/ja-jp/library/System.GC(v=vs.110).aspx システムリソースと言っても所詮はメモリだし、 x64みたいにアドレス空間が広ければ、OSが動的確保すれば収まる話ではある。 だからいずれは気にしなくてよくなると思うよ。 (ただそのときでもDisposeしたほうがいいのは事実だが)
758 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 20:56:01.03 ID:LkVTB1JB.net] >>746 ファイナライザでKeepAliveするのは意味がない KeepAliveしたところで参照している他のオブジェクトのファイナライザが先に呼び出される可能性は防げないし、 ファイナライザの実行が終わる前にthisやその他参照しているオブジェクトがGCに回収されてしまうようなことは無いからね
759 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 21:39:21.41 ID:pUWj3Ef8.net] >>746 もう来んなよ
760 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 08:03:55.06 ID:Sd5tuK/H.net] お前が来るなよw
761 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 17:01:34.76 ID:H9Zj5Bn1.net] internalなインターフェースでも、internalで実装出来ないのね。 なんでだろ。 明示的実装だとeventは自動実装してくれないのね。 ちょっと不便。
762 名前:デフォルトの名無しさん [2015/08/27(木) 18:33:33.61 ID:4ooez7+r.net] 以下のようなことをしたいのですが、 メソッド名が重複するため上手くいきません。 ある変数のスーパークラスを上書くようなことはできないのでしょうか? public abstract class A{ public abstract MyClass instance {get;} } public abstract class B<T> : A where T ; MyClass{ public T MyClass instance {get;} }
763 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 18:40:58.45 ID:3m4FcQPk.net] >>751 全部捨てろ そんなことをしようとせずに済んだ世界を想像し 可能ならば来た道を戻って設計しなおすといい
764 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 18:44:49.92 ID:CaKJnHAU.net] >>752 だけ読むと凄くカッコイイ
765 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 18:45:04.56 ID:0465F1pc.net] つーかMyClassとわかってるならTにする意味ないでしょ
766 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 19:34:06.84 ID:M7ObSeqi.net] 何がしたいんだかよくわからん MyClass はなんだかの形で定義? class B<T> は、もはや修正してエラーもなくせない メソッド名が重複するという問題にたどり着けんw
767 名前:デフォルトの名無しさん [2015/08/27(木) 21:05:28.92 ID:4ooez7+r.net] TはMyClassの継承関係です。 AとかBじゃ分かりにくいですね。 public abstract class 田中{ public abstract 行動 instance {get;} } public abstract class 修行した田中<料理> : 田中 where T ; 行動 { public 料理 instance {get;} } はじめからTつければいいじゃんとか思うかもしんないけど、 ジェネリックの共変性とかの問題があったりしてこんな実装になってます。
768 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 21:16:20.73 ID:dljCNrWS.net] まず用語とやりたいことと質問を整理してくれる? お前の示したコードにメソッドも変数もないし、空想上の文法を示して以下のようなこと、で伝わると思うの?
769 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 21:19:19.33 ID:crZaWZ5K.net] いや…これはシンプルに無視案件だろ こいつに関わってもなんの実りも無い
770 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 21:27:08.41 ID:hme97lr4.net] >>756 public interface I田中{ 行動 instance {get;} } public abstract class 修行した田中<料理> : I田中 where 料理 ; 行動 { override 行動 I田中.instance { get { return this.instance; } } public 料理 instance {get;} } 何がしたいのかさっぱり分からんがこういうことか?
771 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 21:35:49.89 ID:lF/OrL4X.net] 山田かもしれん
772 名前:デフォルトの名無しさん [2015/08/27(木) 21:46:52.77 ID:4ooez7+r.net] public abstract 行動 strategy {get;} を public override 料理 strategy {get;} に上書きしたいです。 まとめるとこうです。 1.オブジェクトの行動を戦略ポリモーフィズムで実現したい 2.継承クラスから戦略をジェネリックに呼び出したい 3.基底クラスの戦略呼び出しは継承クラスの戦略を呼び出す(abstract) 4.ジェネリックの共変性(.net3.5を利用)の問題で3を基底<T>およびメンバTとするのは、 その他のオブジェクトでキャストが膨大に発生するため、ジェネリックを持たない基底クラスを用意した
773 名前:デフォルトの名無しさん [2015/08/27(木) 21:56:46.79 ID:4ooez7+r.net] >>759 そういうことです! たぶんできました!ありがとうございます
774 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 22:22:03.15 ID:pO3unHFi.net] エスパー乙
775 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 23:39:03.06 ID:sO/8ZJev.net] ようわからんから寝るわ 明日は定時にあがって彼女とデートだ
776 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 00:22:50.64 ID:DVJpBS2x.net] ここ数年定時で上がった事無いや。 せめて残業30時間未満希望。
777 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 06:40:20.71 ID:Sz74PPpb.net] とりあえず "料理 ; " の ';' は何だよって感じの所の修正をして欲しかったな エラーが「メソッド名が重複」になるようなコードにしてから、問い合わせろよって感じ わけわかんねーよw
778 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 06:55:57.02 ID:Sz74PPpb.net] >>761 どうしてもそのようにしたければ、二段階に分けてやればいいんじゃねかな インターフェイスが正解だが public class 行動 { } public abstract class A { public abstract 行動 instance { get; } } public abstract class BBase<T> : A where T : 行動 { public override 行動 instance { get; } } public abstract class B<T> : BBase<T> where T : 行動 { public new T instance { get; } } public class 料理 : 行動 { } public class 所望の利用方法 : B<料理> { } リフレクション関係の.Net Frameworkのソースを読んでいたらこういうのに出会ったよ 以前のバージョンで公開してしまったが、互換性を維持しつつ改めて中身隠して継承したいという感じの部分で
779 名前:デフォルトの名無しさん [2015/08/28(金) 10:09:33.73 ID:bO0aCwDR.net] >>767 それだと基底クラスにキャストされているときに呼ばれると基底のメソッドが呼ばれてしまうので今回の要件ではまずいです。
780 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 11:43:18.34 ID:Sz74PPpb.net] >>768 基底クラスの変更はBBaseの方でやるの、二段階に分けるという事
781 名前:デフォルトの名無しさん [2015/08/28(金) 15:45:12.11 ID:O/DjZ5xn.net] BBase<T>からその上位のBのinstanceを呼べないのでまずいです。
782 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 15:48:24.22 ID:Sz74PPpb.net] なんでそこが問題やねんwww まぁ、互換性がうんぬんとかクリティアルな問題がある訳じゃなさそうだし interface 版でいいと思う それでやれば良かろう
783 名前:デフォルトの名無しさん [2015/08/28(金) 17:04:25.71 ID:bO0aCwDR.net] >>771
784 名前: そこがクリティカルだと何度も申し上げていますが。 解決したのでもういいです。 [] [ここ壊れてます]
785 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 17:05:03.05 ID:ZmO5l3R/.net] へーすごいじゃん
786 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 19:26:06.38 ID:jkdHSky5.net] 式木が全然わかんねぇ 動的に検索条件変えるのにつかいたいが
787 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 19:27:16.67 ID:GiTthi+A.net] bbaseってのはババアのSE(システンエンジニア)のことですよね?
788 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 19:58:34.57 ID:Lygpatgh.net] リソースの解放順序をコントロールするクラスを1回作ってしまえばDisposeの明示的呼び出しは完全に不要になるね
789 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 20:01:28.39 ID:LXLt4eax.net] またDispose君か フランスパン目に突き刺して死ね
790 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 20:05:55.57 ID:CjkSJ7ex.net] >>774 アホなことは考えるな 普通にクエリビルダ使え
791 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 20:49:33.85 ID:Sz74PPpb.net] >>776 いや、そこは普通にDispose使えよ、得体のしれないことするなw
792 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 20:55:43.87 ID:ls1PRuKg.net] アンマネージドなリソースをIDisposableなオブジェクトでラップするのは基本だろ え? >756はそういうことを言いたいんじゃないの?
793 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 21:38:47.88 ID:8lfDGDPP.net] Disposeを明示的に呼びだしている時点でおかしい
794 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 21:38:51.18 ID:cLOGe/lp.net] >>776 意味がわからない FormのDisposeはどうやったら不要になるの?
795 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 21:43:04.20 ID:Lygpatgh.net] リソース全部にいちいちDispose呼ぶ派って最近C言語からC#に移ってきた人?
796 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 21:53:36.50 ID:IPCW/fdR.net] using使ってもDisposeは呼びたくなる
797 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 21:55:20.42 ID:ls1PRuKg.net] ツマンネ
798 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:19:38.38 ID:jMAaefta.net] むしろc#やり込んで分かって来てからの方がIDispose使う頻度上がったけどな。 Disposeパターンちゃんと分かって無さそうだし、GC.SuppressFinalize()も使ったことないんだろうな。
799 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:21:47.32 ID:La0rg2tq.net] Dispose漫談
800 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:36:10.25 ID:k07is2fO.net] IDisposableを継承したオブジェクトを、 自分のクラスにコンポジションすると、 自分自身もIDisposableを実装する必要が出てきます このように、どんどんと、IDisposableは伝染していきます IDisposableの要らないクラスは、 メモリ以外のリソースを全く含まない、クラスだけです 終いには、IDisposableだらけになります インテリジェントなクラスほど、IDisposableになります これがGCの現実です
801 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:38:35.26 ID:ls1PRuKg.net] それで?
802 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 22:41:22.64 ID:La0rg2tq.net] へーすごいじゃん
803 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 11:45:01.96 ID:QWgZ6B7l.net] 荒れてる時に失礼します 2ヶ月くらいの初心者ですが lab.tricorn.co.jp/toda/1088 ここにStateとStrategyの違いが書いてますが、構造上の違いは無いため 見分けるにはクラス名で見分けるしかないと書かれていますが、そうなのですか? 別にこの記事を批判してるわけじゃなく、私自身StateとStrategyの違いが イマイチよく分からないだけです
804 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 15:37:43.17 ID:MYIvkVg2.net] 以下を実装しようと思っていますがフォーム外の マウスの座標をどうすれば補足し、メインフォーム上にレンダリングすれば 良いかわかりません。どの様に実装すればよいでしょうか? 1.フォームを起動する。 2.[座標調査]ボタンをクリック 3.マウスをフォームの外に移動したら 「1.」の中央に配置されたラベルにX座標・Y座標を表示する。
805 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 15:43:14.58 ID:rdkBQaJ6.net] Cursor.Positionでスクリーン座標でのマウスカーソル位置が取れる。 タイマで定期的に取るようにすればいいんじゃない?
806 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 16:16:36.49 ID:MYIvkVg2.net] >>793 サンキュー
807 名前:デフォルトの名無しさん [2015/09/02(水) 21:43:47.52 ID:+Iu6xlmH.net] Stateは離散的な状態によって、振る舞いを大きく変えるオブジェクトを実装するためのパターン Strategyは動的に処理を切り替える為のパターンで、ぶっちゃけただの多態性の事だ Strategyは基本的すぎてパターンと呼ぶほどのものではない 他の殆どのパターンでも漏れなくStrategyを使っている
808 名前:デフォルトの名無しさん [2015/09/02(水) 22:24:38.83 ID:2IVkMjjH.net] stateなんてstrategyを外か内のどっちから差し替えるぐらいの違いしかないし、デザインパターンとか偉そうに呼ぶもんでもない。 むしろ、switchで済むもんをstateパターン!とかドヤ顔でやるやつを生み出すクソパターンのひとつだわな。
809 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:16:57.02 ID:OPX/Zhtw.net] デザパタって、 ○○パターンで行こう、みたいなときもあれば 書いたあとに、あれ?これ△△パターンだな……みたいなこともあるし 参考程度でいいんでないかい?
810 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:21:25.69 ID:ZlVQUP4Q.net] デザパタってのは本読んで賢くなったと勘違いしたバカが ことあるごとにパターン名連呼するだけのもの