1 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 00:52:20.67 ID:OtXGSzkV.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part118 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1448207673/ ■関連スレ C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1443271409/ ■コードを貼る場合は↓を使いましょう。 ideone.com/
152 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 05:58:03.11 ID:oAqoRpi+.net] >>142 素朴に考えてみた。 listdataの要素の型をXとする。 var m = new Machine<X>(listdata); Result r = m.Validate(x => CheckA(x)) .Validate(x => CheckB(x)) . ... .Resolve() ; if(r.HasError){ エラー処理(r.Error); }else{ 登録処理(datalist); } みたいなMachineとResultを作る。
153 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 06:05:32.74 ID:oAqoRpi+.net] CheckAの返す型も要るから、Machine<X, E>か。
154 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 11:08:19.37 ID:R9MO+uq2.net] ベジェをGraphics.DrawBezierで描きつつ実際の座標も欲しいので ttp://studio-rain.cocolog-nifty.com/blog/2008/07/post_c4f5.html このサイトを参考に自前で多数のベジェを計算・描画してみました すると座標計算速度は速いけど、Graphics.DrawLineやFillEllipseで実際に描画するのに時間がかかって、Graphics.DrawBezierより明らかに遅い さらに太さのある線を描こうとすると、無駄な描画が増えるので当然だろうけどもっと遅くなる 速度を上げるには、 ・ベジェ計算だけ自前で行って描画はDrawBezierに任せる(ただしピクセル単位で実際の描画とズレるかも) ・アンマネージでの画像操作を覚える(よく知らない) ・GPUを利用して並列描画する?(よく知らない) というあたりでしょうか?
155 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 11:12:49.04 ID:0UWDYh4J.net] >>154 WPF使うとかHTMLのCanvas使うとか
156 名前:154 mailto:sage [2016/02/06(土) 11:41:53.83 ID:R9MO+uq2.net] WPFでは実行部分をC#、描画にDirectxを使えるんですね 調べてみます ありがとうございました
157 名前:デフォルトの名無しさん [2016/02/06(土) 11:54:43.51 ID:6GrwE9uC.net] 2012 ExpressでHtmlAgilityPackを使用したくnugetでインストールしようとしているのですが 「ファイルのデータが壊れています」というメッセージが出てインストールできません。 どのような原因が考えられるでしょうか?
158 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 13:13:58.51 ID:MAd5yVbQ.net] >>151 まだまだ初学者なんで間違ってるかもしれませんが リファクタリング本とかCODE COMPLETEみたいな本で学んでいると なるべくメソッドは、入力に対して出力返すようなシンプルな作りがいいと思いまして メソッド名見ただけで使い方が分かるような物がいいと考えると 出力として欲しいものをrefでごちゃごちゃ渡していくのって、どうなのかなって思いました
159 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 13:45:33.36 ID:ewLa/pEP.net] >>158 > なるべく‥ なんだから、無理に ref を避けなくてもいいと思うよ
160 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 14:30:55.01 ID:4STRQeN+.net] >>158 C/C++の時代からのやり方だ,素直に従いたまえ
161 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 15:55:34.62 ID:57BGy/1R.net] >>158 その感性は100%「正しい」 過去の習慣に惑わらせずにref は例外中の例外でOK
162 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 17:11:18.28 ID:MAd5yVbQ.net] >>152 メソッドチェーンで繋げて評価できるのが凄くいいですね 参考にさせていただきます。 こういうパターンって何かに使われてるんでしょうか? それからscalaのvalidationも調べてみます。
163 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 17:24:02.03 ID:21OGO6t2.net] >>158 クエリとコマンドを明確に区別してコードを書く クエリはシステムを変更しない コマンドは何も戻さない クエリ結果が2つ以上になるならそれらを含む別のクラスを作成する 極論するとシステム開発なんてこれだけで全てうまくいくんだよね
164 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 17:28:55.18 ID:5yNQjtYt.net] >>163 >クエリ結果が2つ以上になるならそれらを含む別のクラスを作成する これ面倒臭がる人多いよね
165 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:11:28.77 ID:ewLa/pEP.net] >>161 で、代賛案もなしかよ w
166 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:33:15.79 ID:5kvIq2AE.net] Tuppleを使うか戻り値2つを保持できる構造体かクラスを定義ってのが定番かな 後はDynamicを使う方法か
167 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:36:47.78 ID:PmjXQmD8.net] Tuppleやdynamic使う位ならrefの方がまし。 Tuppleやdynamicこそ例外中の例外。
168 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:40:04.21 ID:VXVqCJqs.net] 自分の意見を一般化して喋る奴ばかりだな 聞くだけ価値ゼロ いや、時間のムダだからマイナスか
169 名前:152 mailto:sage [2016/02/06(土) 18:47:37.87 ID:57BGy/1R.net] C#7.0からは (IsValid, Errors) = Foo(); と書ける様になるはず。 今回の場合は、Errorsがemptyかどうかで判断出来るが。 仕事で書くなら、それ用の箱を書くかな。
170 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 18:52:33.42 ID:57BGy/1R.net] > メソッドは、入力に対して出力返すようなシンプルな作りがいい これは、この数十年間のソフトウェアの歴史の叡知であり「真理」だと思うよ。
171 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:05:30.74 ID:n+PBDQ0c.net] 宗教くせえw
172 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:17:34.47 ID:21OGO6t2.net] >>171 を異端審問にかけるべきだ
173 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:31:32.52 ID:drYYhGSp.net] そんなことよりどういう変換で「代賛」という漢字を導き出したのかそっちのが気になる。
174 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 19:42:30.58 ID:5ZOibTPd.net] 言われるまで気づかなかった
175 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:12:46.76 ID:BtpsJL+V.net] var a b = Foo(); Foo => 1 "xyz"; または Foo() { return 1 "xyz"; } こう書けたら素敵かもw
176 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:23:54.91 ID:BtpsJL+V.net] オーバーロードは void Foo(int a, int b, int c) |(a, b, 1) |(a, 0, _) => a + b + c; こんな風に書けたら素敵ww
177 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:24:40.73 ID:BtpsJL+V.net] 間違えた void → int
178 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:26:58.54 ID:7g0sefOr.net] タプルとパターンマッチは次期バージョンで導入候補になってるよ
179 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:28:31.35 ID:HCmnTZ9V.net] あまりの奇形さに苦笑い
180 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:29:43.90 ID:HCmnTZ9V.net] >>178 一年以上言い続けてる気がするけどいつ確定すんの、あれ
181 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:32:52.44 ID:7g0sefOr.net] Javaよりマシ C#が世界でJavaに次ぐ巨大なシェアを有するエンタープライズ用言語であることを忘れてないか
182 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 21:54:57.00 ID:5ZOibTPd.net] 下を見てマシマシ言うのはやめていただきたい 底辺の人間のようだ
183 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:00:46.96 ID:BtpsJL+V.net] f1() => 1; f2() => "xyz"; Foo => f1() f2(); こうすると奇形さ倍増w
184 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:06:40.40 ID:5ZOibTPd.net] これまでのC#のバージョンアップサイクルは2~3年だった 次も同程度なら2017年末から2018年初頭だろう せっかくRoslynを公開したんだから短縮を期待したいがどうかな
185 名前:デフォルトの名無しさん [2016/02/06(土) 22:30:58.04 ID:hDlUnW/n.net] プログラミング初心者なのですが誰か助けてくれませんか?(TT)
186 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:43:31.32 ID:mc+HvOWK.net] ?
187 名前:デフォルトの名無しさん [2016/02/06(土) 22:51:44.38 ID:hDlUnW/n.net] 受信したデータを,で分割して4つのdouble型の変数に代入して表示したいのですが string data = serial.ReadLine(); string[] data2 = data.Split(','); double a = double.Parse(data2[0]); double b = double.Parse(data2[1]); double c = double.Parse(data2[2]); double d = double.Parse(data2[3]); Console.Write("a={0}\n, b={1}\n, c={2}\n, d={3}\n",a,b,c,d);追加情報:入力文字列の形式が正しくありません。 というエラーが出てきてすすめないです
188 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:55:41.01 ID:7g0sefOr.net] まずdataの内容をコンソールに吐いて確認
189 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:56:47.69 ID:BtpsJL+V.net] Parseではなく、TryParseを使って逐次エラー処理をする。
190 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:00:07.68 ID:BtpsJL+V.net] 外部からのデータの整合性を前提にするのは絶対にやってはいけない事。 Parsecでも使っときなさい。
191 名前:デフォルトの名無しさん [2016/02/06(土) 23:07:33.12 ID:hDlUnW/n.net] >>188 dataの内容はarduinoから送られてくる値で110,10,11,11このような形式になってます >>189 >>190 しらべてきます
192 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:13:06.42 ID:YiRMDi0V.net] >>191 送られてくるのはそれなんだろうけど >>188 が言ってるのは、その「110,10,11,11」のような値が 正しく入ってきているかをコンソールに出して確認してみよう、ってことだと思うんだけど
193 名前:デフォルトの名無しさん [2016/02/06(土) 23:14:31.90 ID:hDlUnW/n.net] >>192 そうですね ご指摘ありがとうございます 正しく入ってきています
194 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:25:53.91 ID:ewLa/pEP.net] >>187 > Console.Write("a={0}\n, b={1}\n, c={2}\n, d={3}\n",a,b,c,d); 今のエラーに直接関係ないけど {0} って文字列用だぞ
195 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:28:25.15 ID:BtpsJL+V.net] Consoleでは正しく表示される(文字列として)とは限らないから、dataをbyte[]に変換して見た方がいい。
196 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:36:52.45 ID:PmjXQmD8.net] >>194 どこでそんな出鱈目を。 勝手にToString()されますがな。
197 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:48:43.66 ID:BtpsJL+V.net] 原因は、encodingと予想して寝る。
198 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 23:51:16.10 ID:5yNQjtYt.net] デバッガでdataの中身見ればいいだけじゃないの?
199 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:18:04.40 ID:7cY+VLxE.net] そういえばVSのデパッグ機能使ったことないんだけどあれ使ったほうがいいの? いつもデパッグするときは、コンソールライトラインで出力して修正してるんだけど
200 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:41:02.93 ID:mpmibCLh.net] 何の為にデバッガがあるというのか・・・・・・・
201 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 03:43:57.06 ID:E6ZbUD9S.net] デパッグとは
202 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 04:18:29.60 ID:ubsUoPtC.net] printデバッグっつー 人間の発達段階で言えば赤ちゃんのデバッグ方法
203 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 04:29:19.69 ID:0jpZBnXl.net] アセンブラ、アセンブリ、アセンブル…
204 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 09:06:46.60 ID:YehISXuU.net] >>196 すまん、なんか寝ぼけてたわ
205 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 10:58:08.95 ID:jvYVRZ1r.net] >>199 最低限、ブレークポイントとステップ実行と変数のウォッチをおぼえよう バグの大半はクラッシュの場所か分岐で間違った方へ進むか変数の内容がおかしいか
206 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 11:47:40.65 ID:+CXgcQuQ.net] data2[3]に改行が入ってるとか
207 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 12:54:26.02 ID:+iI8pPYd.net] ReadLineは改行含まれん
208 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 12:55:38.99 ID:7cY+VLxE.net] >>205 使ってみます
209 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 15:32:32.86 ID:P4gwgVRD.net] .NETはデータブレークが使えないからうんこなんだよな。
210 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:54:24.49 ID:QHXOM6yq.net] VSがForm Aplicationのサポートを事実上終了したので、個人用アプリ開発においてVSのC++CLRからC# WPFに移行しようとしています。 が、思ったよりも違いが多くて訳がわかりません。初心者スレとのことなので質問するのですが 以下の様な画面構成でアプリを作ろうとしています 1.Mainメニュー(ボタンとして主機能画面に移行・設定画面に移行・それと主機能の内容を選択するコンボボックス) 2.主機能画面(複数画面を遷移するのでPageで作成予定) 3.設定画面(ダイアログにするかどうかは考え中) んで、ダイアログの表示はFormAplicationと大差ないので余裕だったのですがPageというものをうまく表示できません つまり、NavigationWindowを継承していないwindow(MainWindow)からNavigationServiceを動かす方法がよくわかりません。 というか単語の意味を正確に把握できていないので自分が正しく質問できているかもよくわかりません 参考にしたサイトは以下です: https://msdn.microsoft.com/ja-jp/library/ms752299(v=vs.110).aspx gushwell.ldblog.jp/archives/52335648.html 自分の書いたソースは <Frame x:Name="controlFrame" Content="" NavigationUIVisibility="Hidden" Margin="-565.5,-23.5,0,-3.5" Grid.RowSpan="2" HorizontalAlignment="Left" Width="517"/> (MainWindowのXamlに追加) public NavigationService _navi; public MainWindow() { InitializeComponent(); _navi = controlFrame.NavigationService; } private void onClickButton(object sender, RoutedEventArgs e) { Page1 p1 = new Page1(); _navi.Navigate(p1); } } (MainWindow.xaml.csに追加) こんな感じでButtonを押してもPage1が見えてくれない状態です
211 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 17:58:49.93 ID:TdnGwusc.net] formサポート終了するってまじか
212 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 18:25:04.36 ID:OK0009Vg.net] 実際のところWPFとか使われてるの? 不発弾のイメージしかなかったけど。。
213 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 18:29:09.02 ID:vhQgXj1G.net] というよりデスクトップアプリ自体が終わっちゃったからね どうしても必要な場合もElectronのようなものを使って極力Webに合わせる時代
214 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:00:24.97 ID:ZN2qfSkc.net] Timespanの使い方について質問です 時間の文字列が入ったイベントが発生したとします 分毎にまとめて処理したいのですがどうすればできますか?
215 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:05:53.67 ID:n2daTw5S.net] Electronとか言ってるやつの大半は使ったことすらない法則 何が悲しくてデスクトップに生産性最悪のHTMLとjavascriptを持ちこまなければならんのか?
216 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:09:23.84 ID:ubsUoPtC.net] 別に終わってもいいけど、そんな話が出てるなら初心者より先に誰かが騒ぐと思うので、ちょっと眉唾 >>210 左Marginが-500になってるから亜空間にトンドルんじゃないですか?
217 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:18:07.84 ID:ubsUoPtC.net] あ、C++CLIって書いてあるの見落としてた
218 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:21:10.59 ID:6bkdKOR7.net] >>217 Form Aplication=C++CLIって勘違いなのかね
219 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:22:50.89 ID:ubsUoPtC.net] 本当だ 「空のC++CLRプロジェクト」の作成テンプレート無くなってら でもこれで困る人はWPFユーザーよりレアだと思う 混在アセンブリを作成している人くらいか?
220 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:34:03.60 ID:ubsUoPtC.net] >>214 具体的にどこまでできていて、何ができないんだ そもそも時間の文字列なのにTimeSpanなの?期間じゃなくて?
221 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:36:12.24 ID:TdnGwusc.net] >>213 リッチクライアントの需要は今後また増えると思うよ スマホアプリ群雄割拠で皆学んだと思うけど端末に依存しないUIプログラムはたとえ動いてもUXが悪くて使い物にならない どうせ端末毎に最適化されたコードを書くならWebを捨ててリッチクライアントに回帰したほうが楽だし高品質じゃんとなる
222 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 19:55:35.52 ID:ZN2qfSkc.net] >>220 説明不足ですみません サーバーから送られてくるデータ(株価)が文字列なんです それを受信しているのですが、今は受け取ったデータをtexboxに流しているだけです 10:00:00 100 10:00:10 101 10:00:30 102 10:00:59 99 10:01:05 100 ・・・ ・・ ・ このデータを分毎に四本値に処理したいのですが最善の方法を教えてください 今の時刻から60秒の間隔で処理させるにはどうすれば良いか考えているのですが・・・
223 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:27:54.95 ID:SMFdLNV2.net] >>222 前提と要求を1つ1つ箇条書きで列挙して
224 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:40:18.61 ID:WdUVaaF1.net] >>222 前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく 受信した現在時刻と現在値をString.Split、DateTime、DecimalなどでParseする 前回時刻と現在時刻の年月日時分を比べる 一致しているなら、安値、高値を必要に応じて更新し、前回時刻と終値に現在の値を設定する 一致していないなら前回時刻、始値、安値、高値、終値を出力し、前回時刻、始値、安値、高値、終値に現在の値を設定する この程度が書けないようではこの先生きのこれないぜ 恐らく次は誰もが横着してねえで勉強しろカスと回答する
225 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 21:12:16.37 ID:ZN2qfSkc.net] >>224 ありがとうございます c#のことが全くわからないので助かりました
226 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:37:32.87 ID:EIEJb+tM.net] 継承という概念を学習中の初心者です こういうことは可能なのかという質問をさせてください Aというスーパークラスの中にStream型の変数strmがあり Aを継承したBやCというサブクラス内では Stream型から派生したFileStreamやMemoryStreamを代入しています しかし当然ながらStream型の変数に入れているので Stream型のメンバーは呼び出せても FileStreamやMemoryStream固有のメンバーの呼び出しができません これを上手いこと実現するような方法はありますか? ※現在はそういったメンバーの呼び出しのたびにキャストしています。 見当違いな考え方をしていたら指摘ください。 public class A { protected Stream strm; public A() { strm = new Stream(); } } public class B : A { public B() { strm = new FileStream(); } } public class C : A { public C() { strm = new MemoryStream(); } }
227 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:40:37.47 ID:pDArDbnY.net] ジェネりクスを使え
228 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 22:46:28.86 ID:2xuESUN6.net] >>226 そもそも何のためにAでstrmを宣言してるの? Aの中でStreamに対する共通の処理(Close)の面倒を見たいとか? だったらこうすればいい
abstract class A { protected abstract Stream Stream { get; } public void CloseStream() { this.Stream.Close(); } } class B : A { private Stream strm; public B() { strm = new FileStream(); } protected override Stream Stream { get { return strm; } } } protectedフィールドなんかよほどの事情が無い限り使っちゃダメ
229 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:38:01.16 ID:omcXALNz.net] >>226 もはや継承は時代遅れ。
230 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:39:21.18 ID:omcXALNz.net] >>210 Pageなんか使うなよ。
231 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:51:03.86 ID:t4nfvp5Z.net] また変なのが来た来た
232 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 01:02:04.87 ID:vHpbqQsu.net] 継承はアンチパターン
233 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 01:02:40.81 ID:qItXnEJ5.net] >>210 ソースもってこいや!
234 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 01:09:38.20 ID:ohcgMxuP.net] FileStreamとMemoryStreamで共通の処理なんてあるのかね
235 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 02:08:36.47 ID:REXLJUev.net] 素人はわけもなく継承を使ってみたいんだよ。
236 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 02:45:20.79 ID:9ExexpSh.net] public class A<T> where T : Stream { public T strm; public A() {} } public class B : A<FileStream> { public B() { strm = new FileStream("", FileMode.Open); } } public class C : A<MemoryStream> { public C() { strm = new MemoryStream(); } }
237 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 05:37:38.22 ID:Mwo03qgv.net] >>236 内部実装のためにクラスの型引数を汚すな 共通のA型として扱えなくなってそれこそ継承の意味がない
238 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 07:03:28.50 ID:blpM25DK.net] class B { public abstract Stream Create(); } class M { public override Stream Create(){…} public void Method() { var s = base.Stream as MemoryStream; } }
239 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 07:53:03.81 ID:t4nfvp5Z.net] さっきからクソクラス貼ってる奴は何なの? 芸人気取り?
240 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 07:59:15.01 ID:omcXALNz.net] >>226 > 固有のメンバーの呼び出し それを使って、BとCに同じ振る舞いを持たせたいのか? 必要なケースが浮かばないが、無理矢理やるならAに abstract int 振る舞い() みたいなのを持たせれば良いが、お薦めはしない。
241 名前:226 mailto:sage [2016/02/08(月) 11:18:31.02 ID:LZ12yzMb.net] まだ分からないことが多いので 皆さんに提示していただいたのを参考に一つずつ調べてみます >240 ストリームに対する基本的な処理は クラスAでまとめておいて FileStreamやMemoryStreamを使うときは それぞれ別のクラスBやCを用意して そこではFileStreamやMemoryStreamのみが持つメソッドも 呼び出せるようにならないかなと思いました
242 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 11:50:15.03 ID:GixGib55.net] >>241 固有の機能は直接Streamプロバティーを弄るんじゃなくて、固有の機能を使うメソッドをそれぞれのクラスに実装するのが常套手段だね
243 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 14:22:28.12 ID:Wxu8bEfW.net] 委譲案件
244 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 15:39:39.69 ID:R5fKsVvX.net] フォーカスを奪わないで外部プログラムを実行する方法を教えてください
245 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 16:23:11.68 ID:ONEbZjvm.net] 外部プログラムを実行してから、 元のフォーカスに戻ればいいんじゃね?
246 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 16:28:23.58 ID:7T6Ba+h0.net] 外部のプログラムがフォーカスを弄る可能性があるので確実な方法は無い 特定のケースで良いのならフォーカスの奪い合いをする
247 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 18:23:27.98 ID:cKFrgwtc.net] >>142 ですが >>152 のやつのコードを書いてみたので載せておきます ideone.com/LPaQn3
248 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 19:37:53.54 ID:omcXALNz.net] >>247 お疲れ様。 細かい点は色々あるけど、初心者でこれだけ作れたら十分だと思う。 一点だけ。 Checkerは、static classでOK。
249 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 23:47:56.13 ID:Y0ekGZiq.net] ダサいコードだな センスないよ
250 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 00:37:07.07 ID:1ndwTYNc.net] >>249 お前のコードをみせてみろ
251 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 04:33:13.63 ID:+R3lhPoz.net] いやらしいっ
252 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 11:30:59.99 ID:LZa6/uPt.net] Listから指定した範囲(intLange)の値を取得する時、範囲の大きさにもよるとは思いますが for (int i = 0; i < intLange; i++) { bytArray[i] = lstArray[i]; } よりも bytArray = lstArray.GetRange(0, intLange).ToArray(); の、方が早いですか?