ふらっと C#,C♯,C#(初心者用) Part119 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/01/31(日) 00:52:20.67ID:OtXGSzkV他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part118 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1448207673/
■関連スレ
C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1443271409/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
0153デフォルトの名無しさん
2016/02/06(土) 06:05:32.74ID:oAqoRpi+0154デフォルトの名無しさん
2016/02/06(土) 11:08:19.37ID:R9MO+uq2ttp://studio-rain.cocolog-nifty.com/blog/2008/07/post_c4f5.html
このサイトを参考に自前で多数のベジェを計算・描画してみました
すると座標計算速度は速いけど、Graphics.DrawLineやFillEllipseで実際に描画するのに時間がかかって、Graphics.DrawBezierより明らかに遅い
さらに太さのある線を描こうとすると、無駄な描画が増えるので当然だろうけどもっと遅くなる
速度を上げるには、
・ベジェ計算だけ自前で行って描画はDrawBezierに任せる(ただしピクセル単位で実際の描画とズレるかも)
・アンマネージでの画像操作を覚える(よく知らない)
・GPUを利用して並列描画する?(よく知らない)
というあたりでしょうか?
0155デフォルトの名無しさん
2016/02/06(土) 11:12:49.04ID:0UWDYh4JWPF使うとかHTMLのCanvas使うとか
0156154
2016/02/06(土) 11:41:53.83ID:R9MO+uq2調べてみます
ありがとうございました
0157デフォルトの名無しさん
2016/02/06(土) 11:54:43.51ID:6GrwE9uC「ファイルのデータが壊れています」というメッセージが出てインストールできません。
どのような原因が考えられるでしょうか?
0158デフォルトの名無しさん
2016/02/06(土) 13:13:58.51ID:MAd5yVbQまだまだ初学者なんで間違ってるかもしれませんが
リファクタリング本とかCODE COMPLETEみたいな本で学んでいると
なるべくメソッドは、入力に対して出力返すようなシンプルな作りがいいと思いまして
メソッド名見ただけで使い方が分かるような物がいいと考えると
出力として欲しいものをrefでごちゃごちゃ渡していくのって、どうなのかなって思いました
0159デフォルトの名無しさん
2016/02/06(土) 13:45:33.36ID:ewLa/pEP> なるべく‥
なんだから、無理に ref を避けなくてもいいと思うよ
0160デフォルトの名無しさん
2016/02/06(土) 14:30:55.01ID:4STRQeN+C/C++の時代からのやり方だ,素直に従いたまえ
0161デフォルトの名無しさん
2016/02/06(土) 15:55:34.62ID:57BGy/1Rその感性は100%「正しい」
過去の習慣に惑わらせずにref は例外中の例外でOK
0162デフォルトの名無しさん
2016/02/06(土) 17:11:18.28ID:MAd5yVbQメソッドチェーンで繋げて評価できるのが凄くいいですね
参考にさせていただきます。
こういうパターンって何かに使われてるんでしょうか?
それからscalaのvalidationも調べてみます。
0163デフォルトの名無しさん
2016/02/06(土) 17:24:02.03ID:21OGO6t2クエリとコマンドを明確に区別してコードを書く
クエリはシステムを変更しない
コマンドは何も戻さない
クエリ結果が2つ以上になるならそれらを含む別のクラスを作成する
極論するとシステム開発なんてこれだけで全てうまくいくんだよね
0164デフォルトの名無しさん
2016/02/06(土) 17:28:55.18ID:5yNQjtYt>クエリ結果が2つ以上になるならそれらを含む別のクラスを作成する
これ面倒臭がる人多いよね
0165デフォルトの名無しさん
2016/02/06(土) 18:11:28.77ID:ewLa/pEPで、代賛案もなしかよ w
0166デフォルトの名無しさん
2016/02/06(土) 18:33:15.79ID:5kvIq2AE後はDynamicを使う方法か
0167デフォルトの名無しさん
2016/02/06(土) 18:36:47.78ID:PmjXQmD8Tuppleやdynamicこそ例外中の例外。
0168デフォルトの名無しさん
2016/02/06(土) 18:40:04.21ID:VXVqCJqs聞くだけ価値ゼロ
いや、時間のムダだからマイナスか
0169152
2016/02/06(土) 18:47:37.87ID:57BGy/1R(IsValid, Errors) = Foo();
と書ける様になるはず。
今回の場合は、Errorsがemptyかどうかで判断出来るが。
仕事で書くなら、それ用の箱を書くかな。
0170デフォルトの名無しさん
2016/02/06(土) 18:52:33.42ID:57BGy/1Rこれは、この数十年間のソフトウェアの歴史の叡知であり「真理」だと思うよ。
0171デフォルトの名無しさん
2016/02/06(土) 19:05:30.74ID:n+PBDQ0c0172デフォルトの名無しさん
2016/02/06(土) 19:17:34.47ID:21OGO6t20173デフォルトの名無しさん
2016/02/06(土) 19:31:32.52ID:drYYhGSp0174デフォルトの名無しさん
2016/02/06(土) 19:42:30.58ID:5ZOibTPd0175デフォルトの名無しさん
2016/02/06(土) 21:12:46.76ID:BtpsJL+VFoo => 1 "xyz";
または
Foo()
{
return 1 "xyz";
}
こう書けたら素敵かもw
0176デフォルトの名無しさん
2016/02/06(土) 21:23:54.91ID:BtpsJL+Vvoid Foo(int a, int b, int c)
|(a, b, 1)
|(a, 0, _)
=> a + b + c;
こんな風に書けたら素敵ww
0177デフォルトの名無しさん
2016/02/06(土) 21:24:40.73ID:BtpsJL+Vvoid → int
0178デフォルトの名無しさん
2016/02/06(土) 21:26:58.54ID:7g0sefOr0179デフォルトの名無しさん
2016/02/06(土) 21:28:31.35ID:HCmnTZ9V0180デフォルトの名無しさん
2016/02/06(土) 21:29:43.90ID:HCmnTZ9V一年以上言い続けてる気がするけどいつ確定すんの、あれ
0181デフォルトの名無しさん
2016/02/06(土) 21:32:52.44ID:7g0sefOrC#が世界でJavaに次ぐ巨大なシェアを有するエンタープライズ用言語であることを忘れてないか
0182デフォルトの名無しさん
2016/02/06(土) 21:54:57.00ID:5ZOibTPd底辺の人間のようだ
0183デフォルトの名無しさん
2016/02/06(土) 22:00:46.96ID:BtpsJL+Vf2() => "xyz";
Foo => f1() f2();
こうすると奇形さ倍増w
0184デフォルトの名無しさん
2016/02/06(土) 22:06:40.40ID:5ZOibTPd次も同程度なら2017年末から2018年初頭だろう
せっかくRoslynを公開したんだから短縮を期待したいがどうかな
0185デフォルトの名無しさん
2016/02/06(土) 22:30:58.04ID:hDlUnW/n0186デフォルトの名無しさん
2016/02/06(土) 22:43:31.32ID:mc+HvOWK0187デフォルトの名無しさん
2016/02/06(土) 22:51:44.38ID:hDlUnW/nstring 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);追加情報:入力文字列の形式が正しくありません。
というエラーが出てきてすすめないです
0188デフォルトの名無しさん
2016/02/06(土) 22:55:41.01ID:7g0sefOr0189デフォルトの名無しさん
2016/02/06(土) 22:56:47.69ID:BtpsJL+V0190デフォルトの名無しさん
2016/02/06(土) 23:00:07.68ID:BtpsJL+VParsecでも使っときなさい。
0191デフォルトの名無しさん
2016/02/06(土) 23:07:33.12ID:hDlUnW/n>>189
>>190しらべてきます
0192デフォルトの名無しさん
2016/02/06(土) 23:13:06.42ID:YiRMDi0V送られてくるのはそれなんだろうけど
>>188が言ってるのは、その「110,10,11,11」のような値が
正しく入ってきているかをコンソールに出して確認してみよう、ってことだと思うんだけど
0193デフォルトの名無しさん
2016/02/06(土) 23:14:31.90ID:hDlUnW/n正しく入ってきています
0194デフォルトの名無しさん
2016/02/06(土) 23:25:53.91ID:ewLa/pEP> Console.Write("a={0}\n, b={1}\n, c={2}\n, d={3}\n",a,b,c,d);
今のエラーに直接関係ないけど {0} って文字列用だぞ
0195デフォルトの名無しさん
2016/02/06(土) 23:28:25.15ID:BtpsJL+V0196デフォルトの名無しさん
2016/02/06(土) 23:36:52.45ID:PmjXQmD8どこでそんな出鱈目を。
勝手にToString()されますがな。
0197デフォルトの名無しさん
2016/02/06(土) 23:48:43.66ID:BtpsJL+V0198デフォルトの名無しさん
2016/02/06(土) 23:51:16.10ID:5yNQjtYt0199デフォルトの名無しさん
2016/02/07(日) 00:18:04.40ID:7cY+VLxEいつもデパッグするときは、コンソールライトラインで出力して修正してるんだけど
0200デフォルトの名無しさん
2016/02/07(日) 00:41:02.93ID:mpmibCLh0201デフォルトの名無しさん
2016/02/07(日) 03:43:57.06ID:E6ZbUD9S0202デフォルトの名無しさん
2016/02/07(日) 04:18:29.60ID:ubsUoPtC人間の発達段階で言えば赤ちゃんのデバッグ方法
0203デフォルトの名無しさん
2016/02/07(日) 04:29:19.69ID:0jpZBnXl0204デフォルトの名無しさん
2016/02/07(日) 09:06:46.60ID:YehISXuUすまん、なんか寝ぼけてたわ
0205デフォルトの名無しさん
2016/02/07(日) 10:58:08.95ID:jvYVRZ1r最低限、ブレークポイントとステップ実行と変数のウォッチをおぼえよう
バグの大半はクラッシュの場所か分岐で間違った方へ進むか変数の内容がおかしいか
0206デフォルトの名無しさん
2016/02/07(日) 11:47:40.65ID:+CXgcQuQ0207デフォルトの名無しさん
2016/02/07(日) 12:54:26.02ID:+iI8pPYd0208デフォルトの名無しさん
2016/02/07(日) 12:55:38.99ID:7cY+VLxE使ってみます
0209デフォルトの名無しさん
2016/02/07(日) 15:32:32.86ID:P4gwgVRD0210デフォルトの名無しさん
2016/02/07(日) 17:54:24.49ID:QHXOM6yqが、思ったよりも違いが多くて訳がわかりません。初心者スレとのことなので質問するのですが
以下の様な画面構成でアプリを作ろうとしています
1.Mainメニュー(ボタンとして主機能画面に移行・設定画面に移行・それと主機能の内容を選択するコンボボックス)
2.主機能画面(複数画面を遷移するのでPageで作成予定)
3.設定画面(ダイアログにするかどうかは考え中)
んで、ダイアログの表示はFormAplicationと大差ないので余裕だったのですがPageというものをうまく表示できません
つまり、NavigationWindowを継承していないwindow(MainWindow)からNavigationServiceを動かす方法がよくわかりません。
というか単語の意味を正確に把握できていないので自分が正しく質問できているかもよくわかりません
参考にしたサイトは以下です:
https://msdn.microsoft.com/ja-jp/library/ms752299(v=vs.110).aspx
http://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が見えてくれない状態です
0211デフォルトの名無しさん
2016/02/07(日) 17:58:49.93ID:TdnGwusc0212デフォルトの名無しさん
2016/02/07(日) 18:25:04.36ID:OK0009Vg不発弾のイメージしかなかったけど。。
0213デフォルトの名無しさん
2016/02/07(日) 18:29:09.02ID:vhQgXj1Gどうしても必要な場合もElectronのようなものを使って極力Webに合わせる時代
0214デフォルトの名無しさん
2016/02/07(日) 19:00:24.97ID:ZN2qfSkc時間の文字列が入ったイベントが発生したとします
分毎にまとめて処理したいのですがどうすればできますか?
0215デフォルトの名無しさん
2016/02/07(日) 19:05:53.67ID:n2daTw5S何が悲しくてデスクトップに生産性最悪のHTMLとjavascriptを持ちこまなければならんのか?
0216デフォルトの名無しさん
2016/02/07(日) 19:09:23.84ID:ubsUoPtC>>210
左Marginが-500になってるから亜空間にトンドルんじゃないですか?
0217デフォルトの名無しさん
2016/02/07(日) 19:18:07.84ID:ubsUoPtC0218デフォルトの名無しさん
2016/02/07(日) 19:21:10.59ID:6bkdKOR7Form Aplication=C++CLIって勘違いなのかね
0219デフォルトの名無しさん
2016/02/07(日) 19:22:50.89ID:ubsUoPtC「空のC++CLRプロジェクト」の作成テンプレート無くなってら
でもこれで困る人はWPFユーザーよりレアだと思う
混在アセンブリを作成している人くらいか?
0220デフォルトの名無しさん
2016/02/07(日) 19:34:03.60ID:ubsUoPtC具体的にどこまでできていて、何ができないんだ
そもそも時間の文字列なのにTimeSpanなの?期間じゃなくて?
0221デフォルトの名無しさん
2016/02/07(日) 19:36:12.24ID:TdnGwuscリッチクライアントの需要は今後また増えると思うよ
スマホアプリ群雄割拠で皆学んだと思うけど端末に依存しないUIプログラムはたとえ動いてもUXが悪くて使い物にならない
どうせ端末毎に最適化されたコードを書くならWebを捨ててリッチクライアントに回帰したほうが楽だし高品質じゃんとなる
0222デフォルトの名無しさん
2016/02/07(日) 19:55:35.52ID:ZN2qfSkc説明不足ですみません
サーバーから送られてくるデータ(株価)が文字列なんです
それを受信しているのですが、今は受け取ったデータをtexboxに流しているだけです
10:00:00 100
10:00:10 101
10:00:30 102
10:00:59 99
10:01:05 100
・・・
・・
・
このデータを分毎に四本値に処理したいのですが最善の方法を教えてください
今の時刻から60秒の間隔で処理させるにはどうすれば良いか考えているのですが・・・
0223デフォルトの名無しさん
2016/02/07(日) 20:27:54.95ID:SMFdLNV2前提と要求を1つ1つ箇条書きで列挙して
0224デフォルトの名無しさん
2016/02/07(日) 20:40:18.61ID:WdUVaaF1前回時刻、 始値、安値、高値、終値のフィールドは適当に初期化しておく
受信した現在時刻と現在値をString.Split、DateTime、DecimalなどでParseする
前回時刻と現在時刻の年月日時分を比べる
一致しているなら、安値、高値を必要に応じて更新し、前回時刻と終値に現在の値を設定する
一致していないなら前回時刻、始値、安値、高値、終値を出力し、前回時刻、始値、安値、高値、終値に現在の値を設定する
この程度が書けないようではこの先生きのこれないぜ
恐らく次は誰もが横着してねえで勉強しろカスと回答する
0225デフォルトの名無しさん
2016/02/07(日) 21:12:16.37ID:ZN2qfSkcありがとうございます
c#のことが全くわからないので助かりました
0226デフォルトの名無しさん
2016/02/07(日) 22:37:32.87ID:EIEJb+tMこういうことは可能なのかという質問をさせてください
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();
}
}
0227デフォルトの名無しさん
2016/02/07(日) 22:40:37.47ID:pDArDbnY0228デフォルトの名無しさん
2016/02/07(日) 22:46:28.86ID:2xuESUN6そもそも何のために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フィールドなんかよほどの事情が無い限り使っちゃダメ
0229デフォルトの名無しさん
2016/02/08(月) 00:38:01.16ID:omcXALNzもはや継承は時代遅れ。
0230デフォルトの名無しさん
2016/02/08(月) 00:39:21.18ID:omcXALNzPageなんか使うなよ。
0231デフォルトの名無しさん
2016/02/08(月) 00:51:03.86ID:t4nfvp5Z0232デフォルトの名無しさん
2016/02/08(月) 01:02:04.87ID:vHpbqQsu0233デフォルトの名無しさん
2016/02/08(月) 01:02:40.81ID:qItXnEJ5ソースもってこいや!
0234デフォルトの名無しさん
2016/02/08(月) 01:09:38.20ID:ohcgMxuP0235デフォルトの名無しさん
2016/02/08(月) 02:08:36.47ID:REXLJUev0236デフォルトの名無しさん
2016/02/08(月) 02:45:20.79ID:9ExexpShpublic 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();
}
}
0237デフォルトの名無しさん
2016/02/08(月) 05:37:38.22ID:Mwo03qgv内部実装のためにクラスの型引数を汚すな
共通のA型として扱えなくなってそれこそ継承の意味がない
0238デフォルトの名無しさん
2016/02/08(月) 07:03:28.50ID:blpM25DKpublic abstract Stream Create();
}
class M {
public override Stream Create(){…}
public void Method() {
var s = base.Stream as MemoryStream;
}
}
0239デフォルトの名無しさん
2016/02/08(月) 07:53:03.81ID:t4nfvp5Z芸人気取り?
0240デフォルトの名無しさん
2016/02/08(月) 07:59:15.01ID:omcXALNz> 固有のメンバーの呼び出し
それを使って、BとCに同じ振る舞いを持たせたいのか?
必要なケースが浮かばないが、無理矢理やるならAに
abstract int 振る舞い()
みたいなのを持たせれば良いが、お薦めはしない。
0241226
2016/02/08(月) 11:18:31.02ID:LZ12yzMb皆さんに提示していただいたのを参考に一つずつ調べてみます
>240
ストリームに対する基本的な処理は
クラスAでまとめておいて
FileStreamやMemoryStreamを使うときは
それぞれ別のクラスBやCを用意して
そこではFileStreamやMemoryStreamのみが持つメソッドも
呼び出せるようにならないかなと思いました
0242デフォルトの名無しさん
2016/02/08(月) 11:50:15.03ID:GixGib55固有の機能は直接Streamプロバティーを弄るんじゃなくて、固有の機能を使うメソッドをそれぞれのクラスに実装するのが常套手段だね
0243デフォルトの名無しさん
2016/02/08(月) 14:22:28.12ID:Wxu8bEfW0244デフォルトの名無しさん
2016/02/08(月) 15:39:39.69ID:R5fKsVvX0245デフォルトの名無しさん
2016/02/08(月) 16:23:11.68ID:ONEbZjvm元のフォーカスに戻ればいいんじゃね?
0246デフォルトの名無しさん
2016/02/08(月) 16:28:23.58ID:7T6Ba+h0特定のケースで良いのならフォーカスの奪い合いをする
0247デフォルトの名無しさん
2016/02/08(月) 18:23:27.98ID:cKFrgwtc>>152のやつのコードを書いてみたので載せておきます
http://ideone.com/LPaQn3
0248デフォルトの名無しさん
2016/02/08(月) 19:37:53.54ID:omcXALNzお疲れ様。
細かい点は色々あるけど、初心者でこれだけ作れたら十分だと思う。
一点だけ。
Checkerは、static classでOK。
0249デフォルトの名無しさん
2016/02/08(月) 23:47:56.13ID:Y0ekGZiqセンスないよ
0250デフォルトの名無しさん
2016/02/09(火) 00:37:07.07ID:1ndwTYNcお前のコードをみせてみろ
0251デフォルトの名無しさん
2016/02/09(火) 04:33:13.63ID:+R3lhPoz0252デフォルトの名無しさん
2016/02/09(火) 11:30:59.99ID:LZa6/uPtfor (int i = 0; i < intLange; i++)
{
bytArray[i] = lstArray[i];
}
よりも
bytArray = lstArray.GetRange(0, intLange).ToArray();
の、方が早いですか?
■ このスレッドは過去ログ倉庫に格納されています