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


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

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



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();
の、方が早いですか?






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

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

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