1 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 20:50:08.06 ID:IGV3Viy6.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1436344868/ ■関連スレ C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1443271409/ ■コードを貼る場合は↓を使いましょう。 ideone.com/
577 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 20:30:37.38 ID:sXl2Uj86.net] すばやい返事ありがとうございます Mapの仕方がよくわからないんですけど とりあえず単独で使うだけではだめなんですね もう少し調べてみます ありがとうございました
578 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 20:30:43.03 ID:UfQouXyC.net] LINQなんて最初はコレクションに対する便利機能てんこ盛りの拡張メソッドという認識でOKじゃね? 罠とかあるから習熟してから突っ込んで考えればいいんであってー
579 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 20:32:31.59 ID:VtUJC+iX.net] いちいち、delegate() { return x * 2; } とか書いてられないから、() => x * 2 のように簡潔に書けるようになったのではないか。 式ツリーのラムダ式とLINQのWhereとかで使われるラムダ式は、別物だと思う。 ラムダとか言ってるけど、所詮、デリゲートだし、シグネチャさえあえばメソッドを渡すこともできる。 () => x * 2 こういう表記の仕方をラムダ式と呼んでる程度でしかない。
580 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 20:53:44.50 ID:QAKXUKz2.net] >>563 内部的な型が違うんだよ int a; の a と 3 はどちらもint型だが、後者には定数という属性も内部的には付与されている コンパイラを作る側の人は意識しているが、使う側の人には意識させないように作られている ある種の自動変換が入っているんだ ラムダ式をデリゲートとしてしようしようとすると、自動的にラムダ式についているCompile()メソッドが発動してデリゲート型に変換してしまう
581 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 20:54:59.02 ID:HNCOBt+u.net] >>541 ありがとうございます。解決しました。 しかし、なぜDataRowCollectionクラスがIEnumerable<DataRow>の実装でないのか疑問ではあります。 まあ歴史的な理由だとは思いますが…。 (例えばDataRowCollectionクラス実装時はジェネリックという概念がなかったとか…)
582 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 20:56:16.62 ID:56qTwYt/.net] asp.netで DataTable dt = new DataTable(); GridView1.DataSource = dt; とやって、2次元のテーブルの中身をグリッドビューにEXCELの画面みたいに 出しているのですが、セルの中で改行させる方法が分かれば教えて下さい。
583 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 20:59:48.89 ID:QAKXUKz2.net] DataSetクラスはジェネリックスの無かった.NET1.0の頃からあるからね ジェネリックのDataSet欲しいね・・・
584 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:10:25.83 ID:VtUJC+iX.net] >>565 ジェネリックができたのは、.NET 2.0。それ以前は、ジェネリックそのものがなかった。 DataRowCollectionあたりができたのは、.net 1.0だから当然、ジェネリックではない。 後からがIEnumerable<DataRow>ぐらい付け足せるだろうと思うかも知れないが、既存の古いコードを破壊しかねないという危険性がある。 非ジェネリックなものは、rows.OfType<DataRow>() でがIEnumerable<DataRow>に変換して利用するのが吉だろう。
585 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:25:41.32 ID:Q+Hc78/A.net] ideone.com/DfxBRT すみません... このプログラミングの実行順序?というか解説を お願い致します..
586 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:32:28.64 ID:VtUJC+iX.net] >>569 断る。スレタイの言語名1000回読んで出直してこい。
587 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:36:42.56 ID:Q+Hc78/A.net] あ、Cじゃないスレでしたね すみませんでした
588 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:37:56.39 ID:Qi78cw7w.net] どうでもいいけどヘタクソなサンプルだなあ これ見て再帰スゴイとか思う学生がいるとは思えない
589 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:41:06.36 ID:QAKXUKz2.net] キチガイ回答者のかまってちゃん発動かいな 死んでおけ
590 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 21:42:15.24
] [ここ壊れてます]
591 名前: ID:Q+Hc78/A.net mailto: >>572 この例を見ても再帰がよく分かりません... [] [ここ壊れてます]
592 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 22:07:18.95 ID:UfQouXyC.net] aより前の文字コードがきたらどうすんだろ
593 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 22:40:42.74 ID:UVzGbDip.net] サンプルなんだから特定の条件下で動けばいいんだろ。 この程度は自分なりにでも解析をしてから分からないところだけを質問して欲しいがな。
594 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 22:42:31.39 ID:/yUCkyPR.net] DataTableExtensionsでいいんじゃね?
595 名前:デフォルトの名無しさん mailto:sage [2015/11/05(木) 22:45:40.69 ID:6rpVQh8a.net] 超初歩的な質問ですみません インターフェイスクラスを実装した構造体クラスがあって、その構造体クラスのインスタンスをあるメソッドに渡すとします。 そのメソッドの仮引数の型はインターフェイスクラスにしておきます。 このときに、メソッドの仮引数が値渡しであればコンパイルエラーとならないのに、参照渡しにするとエラーとなる理由はなぜなのでしょうか?
596 名前:デフォルトの名無しさん mailto:sage [2015/11/05(木) 23:10:16.20 ID:ExWVN0qD.net] >>578 構造体なのかクラスなのかはっきりせい
597 名前:デフォルトの名無しさん mailto:sage [2015/11/05(木) 23:15:59.04 ID:WQByrXLp.net] 何言ってるかさっぱり分からん
598 名前:デフォルトの名無しさん mailto:sage [2015/11/05(木) 23:17:05.85 ID:JipnsoZF.net] >>578 参照渡しはメソッド側で引数に値を代入して書き換えできる 同じインターフェイスを実装した別の型の値を代入される可能性がある また、値型をインターフェイスにキャストするにはボックス化が必要なのでコピーが発生するから参照渡しは不可 インターフェイス通したいならジェネリックのwhere使う
599 名前:578 mailto:sage [2015/11/05(木) 23:56:44.30 ID:6rpVQh8a.net] >>579 すみません、構造体です。 まだあやふやな理解で申し訳ないです。 >>581 ボックス化というのがいまいちわかっていないですが、 値型を参照渡ししようとしてもコピーしないと出来ないということですか? ジェネリックとは?ちょっと調べてみます。 ありがとうございます。
600 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 00:22:51.45 ID:v3nYR+i3.net] intを渡すとして、 不可 → void Hoge(ref IComparable<int> cmp){} 可 → void Hoge<T>(ref T cmp) where T : IComparable<int>{}
601 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 00:31:22.76 ID:dWA72Rvv.net] >>582 構造体(struct)にもインターフェースは、指定可能。 すべての型は、object型として扱えるため、object型に代入可能で、構造体(値型)も当然、objectとして扱える。 object型というのは、言い換えればobjectクラスなので、objectは、参照型。 構造体など値型を参照型として扱うとき必要なのがボックス化と呼ばれるもの。 また、インターフェースも参照型なので、インターフェースとして受けてしまうとボックス化が発生する。 イメージ的には、 ボックス化されるとき、new object( 10 ) のような感じで値型をラップした新しいオブジェクトが作成されている。 void Foo( IHoge x ) のようなインターフェースを受け取るメソッドに値型を渡しても、Fooメソッドでは、別のオブジェクトになっているのでいくら書き換えたところで無意味。 値型でなく、最初からクラスとして作っておけば、そういう問題は起きないが構造体を使いたい場合、下記のように制約付きのジェネリックメソッドを使うと良い。 static void Foo<T>( ref T arg ) where T : IHoge { arg.Value = 100; } こうすれば、ボックス化は、発生しないで、IHogeインターフェースのメンバーを呼び出すことが可能となる。 refは、参照渡しさせるために必要。
602 名前:578 mailto:sage [2015/11/06(金) 00:42:25.19 ID:pjudYN7I.net] >>583-584 教えていただいた通りに修正したらエラー解消しました。 詳細な解説ありがとうございます。 納得できました。
603 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 09:12:45.36 ID:MQ0OQAyt.net] 1つのプロジェクトから2つ以上のアセンブリを出力するようにってできる? こんな感じにA.csproj → A.x86.dll A.x64.dll
604 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 12:16:37.98 ID:955qm0wN.net] プロジェクト構成を追加する
605 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 12:19:39.17 ID:dWA72Rvv.net] Any CPUじゃダメなの?
606 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 15:32:24.63 ID:guayBMf4.net] ダメだろ
607 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 15:39:55.16 ID:KrpwsfQj.net] クラスライブラリプロジェクトでEntityFrameworkを利用する メインのプロジェクトではEFに直接関わるようなコードは一切書いていないのに エラーが出て、どうやらApp.configをクラスライブラリのそれと同じように書き EFもインストールしないといけないみたいですがなぜですか? メインのコンソールアプリでは、 ClassLibrary1.Run(); としか書いていないのに
608 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 16:20:31.16 ID:hUa1dWCf.net] >>588-589 dllならAny CPUで良い気がするけどな >>590 そのクラスライブラリがEF使ってるからだろ
609 名前:質問者 mailto:sage [2015/11/06(金) 19:15:27.36 ID:n93wU3zk.net] public const string[] names = { "abe", "kume", "ume"}; は何故できないの? C#っておかしい
610 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 19:45:53.50 ID:DdHE3j1N.net] 歴史のある言語だし、配列のconstを許すと何か不都合があるんじゃないかな 知らんけど
611 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 19:49:11.59 ID:JLRIGyKN.net] 一般的な業務システムにEF使うのってお前ら的にどう思う? DB周りに中間テーブル勝手に作られたり とかどうなんかなーって思うんだけど
612 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 19:49:47.56 ID:H8/mSBf4.net] C#のconstはmutabilityを示す修飾子ではない mutabilityはクラス特性の一つにすぎない
613 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 19:52:12.27 ID:O+3ivu6x.net] >>594 テーブル管理をきっちりして、メンテナンスが面倒な糞長いクエリ作らないことさえ心がければ問題ないと思う それが出来るなら何でもOKだろと言われたらそれまでだが
614 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 20:01:54.19 ID:hUa1dWCf.net] >>594 コードファーストで、プログラマがモデル変更したらDBレイアウト変わるとか DB層とアプリ層と分離するような業務システムだとあり得ん EFはコードファーストしかないわけじゃないけど 最近、既存DBからコードファーストとかいうわけわからんオプションも追加されたけど EDM作らんで良いし、マッピングの自由度上がるから、これが結構いい感じだぞ 俺はこれをコードセカンドと呼ぶ事にしたw
615 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 20:02:50.21 ID:Vl4Fajoj.net] 構造体のconstもできないよね あとIntPtr(これは仕方ないか)
616 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 20:04:07.68 ID:v3nYR+i3.net] >>594 DBファーストなら中間テーブルは作られない(たぶん) パフォーマンスに引っかからなければ採用していいと思う
617 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 20:07:22.09 ID:v3nYR+i3.net] >>592 ミュータブルなら配列があれば許されたかもね…
618 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 20:11:37.63 ID:VIb2xLBB.net] constはコンパイル時にリテラルを埋め込むからnewで生成するインスタンスはconstへ代入できない。 C#で配列を定数扱いしたければReadOnlyCollectionを使う。
619 名前:デフォルトの名無しさん [2015/11/06(金) 22:35:43.69 ID:ZOMBif/U.net] readonlyにするとそのメンバの参照を変えることはできなくなりますが、そのメンバのメンバの値は変えれますよね? そのメンバのメンバもreadonlyにすることはできないんですか?
620 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 22:45:54.70 ID:v3nYR+i3.net] メンバをreadonlyプロパティにすればいい コレクションならIReadOnly〜インターフェースがある
621 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:10:20.05 ID:lDi+bZZ1.net] C#のmutabilityはクラス特性で備えるもので 修飾子で指定するものじゃないと言ってんだろ 理解力が不足しているのか?
622 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:18:27.60 ID:dWA72Rvv.net] こんな感じでプロパティ作れば、初期化以外で変更できないようにできるけど… shield class Hoge { public int Property1 { get; } = 10; public int Property2 { get; } = 20; }
623 名前:デフォルトの名無しさん [2015/11/06(金) 23:25:34.03 ID:ZOMBif/U.net] >>603 ありがとうございます。使ってみます。 >>604 ちょっと調べたけどよくわかりませんでした。 久しぶりに会った友達に、おめ
624 名前:ぇずいぶんとミュータブルなぁーって使う感じでしょうか? [] [ここ壊れてます]
625 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:28:23.63 ID:x7E/To5I.net] >>605 もうちょっとこの構文は何とかならなかったのかと思うな…
626 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:42:18.13 ID:KrpwsfQj.net] >>591 そこがよくわからないんです クラスライブラリでしか使ってないEFが なぜメインプロジェクトでもインストールして App.configまで書き換えないといけないのか 例えば、zipライブラリやその他ライブラリを ライブラリプロジェクトで使っていても メインプロジェクトでそれらライブラリを参照しなくてもいけてます 同じように分離できないんでしょうか?
627 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:51:07.90 ID:MmN1hyKF.net] >>604 その説明は、誤解を生みまくる const言っているなら C++ のアレを意識しているんだろうから C++のmutableとゴッチャになる
628 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:55:31.99 ID:MmN1hyKF.net] Java全盛期の時代に、政治的な都合でJavaクローンとして生まれたC#ゆえ 書き換えに関する制御は基本的に期待しないほうが良い、というか諦めたほうが良いでしょう 当時constなど不要、高速化目的ならオプティマイザが頑張ればいいという考えが席巻していたから残念な事になってしまっている 目的は高速化じゃないといっても話聞きゃしない話聞かない回答者みたいなので一杯になってたからな
629 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:55:56.97 ID:J1IjfUsv.net] >>608 ライブラリが特定の場所の特定のDBに紐付いてたら再利用性も柔軟性もクソもないだろ? 構成はアプリ側で指定するんだよ
630 名前:デフォルトの名無しさん mailto:sage [2015/11/06(金) 23:59:22.58 ID:/KOBRm1I.net] MVVMパターンについて質問です。 Modelクラスがツリーのデータを保持できるように定義されている場合、 class Model { public List<Model> Children; public Model Parent; } ViewModelクラスはどのように作ればよいのでしょうか。 class ViewModel { public ObservableCollection<ViewModel> Children; public ViewModel Parent; } ユーザーがアイテムを追加・削除した際の、VM〜M間でのChilrenのやりとりで良い方法が思い浮かばないのです。
631 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 00:03:09.47 ID:HCtDVk7w.net] 地道にモデル側のコレクションにAddしたりRemoveするしかないんじゃないのっと
632 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 00:05:43.30 ID:mc1zorkl.net] >>612 そんなもんModelをそのまま公開すりゃいいよ いちいちラップするのは無駄に複雑になるだけ
633 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 00:10:14.79 ID:bqVTu3cR.net] ちょっとなにいってるかわからないですね 何に使いたいのでVMいるのかがわからない
634 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 00:37:06.17 ID:rJMrVjho.net] >>611 特定のDBには既にひも付けされてますよね? Entityクラスを事前に静的に生成しているわけだし 特定の場所に関しては確かにそうですが dbパスを渡すだけでいいはずなのになんでEF入れなきゃだめなんでしょ?
635 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 00:38:32.76 ID:VdNkzOpu.net] mvvm関係ないけど、オブジェクトが持ってる参照をそのまま外に出すのとカプセル化の間でいつも悩む かといって毎回コピーしたら遅いし
636 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 00:47:30.53 ID:3j5S0EXp.net] >>617 インターフェイス通せばいいじゃない >>612 選択したツリー項目毎に特定のVM表示したいの?
637 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 01:36:23.40 ID:X2ab0wjO.net] >>616 EF使うのに入れなくていいと思う理論がわからん
638 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 01:55:38.19 ID:rJMrVjho.net] >>619 実際に使うのはクラスライブラリ側だけだからです。 EFじゃなくて他のライブラリの場合は メインプロジェクトに入れなくても動くのに なぜEFだけ特殊なのかが知りたいんです
639 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 02:09:02.01 ID:VdNkzOpu.net] >>618 やっぱそうなるよねぇ 操作用のインターフェース
640 名前:作るの面倒だけど [] [ここ壊れてます]
641 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 03:22:43.92 ID:X2ab0wjO.net] >>620 そもそもほんとにメイン側でなにもしてないなら 実行時に必要なライブラリがそろってれば良いだけで、メイン側プロジェクトにEFの参照いらないけど? 別に特殊でもなんでもない もしそんな前提があるなら、ASP.NETでEF使えなくなるじゃないか
642 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 03:28:58.48 ID:rJMrVjho.net] >>622 >>590 一行しか書いてないのになぜ参照がいるんですか?
643 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 05:33:11.29 ID:cHn3VkC0.net] >>623 クラスライブラリ側のapp.configを見てごらん EFをインストールしたときに書き換えられた部分があるでしょ そしてよーく考えよう
644 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 17:24:35.95 ID:X2ab0wjO.net] >>623 知らんがな ソース全部晒してみろ そういえば、エラー出るでどんなエラー出たか書かない奴の質問は答えるだけ無駄って誰かが言ってたな
645 名前:デフォルトの名無しさん [2015/11/07(土) 17:54:38.72 ID:1m+5NuQy.net] データベースやサーバーアプリでマイクロソフト系技術はもうだめだね 消えゆく運命だろ
646 名前:デフォルトの名無しさん mailto:sage [2015/11/07(土) 23:27:09.98 ID:qRUcE/WB.net] 貴重な時間を浪費させていくスタイルだから無駄ではない 価値マイナス
647 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 00:28:50.73 ID:QQOP8UEs.net] >>626 https://github.com/damienbod/SQLiteExamples やってることはこれと同じです これもメインプロジェクトでインストールしてます メインプロジェクトのApp.Configを書き換えない場合 エラー No connection string named 'MyEntities' could be found in the application config file. これをぐぐると、App.Configをメインプロジェクトにコピペしろと回答がある が、コピペしても、 error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SQLite.EF6'. Make sure the provider is registered in the 'entityFramework' section of the application config file. となる、つまりインストールしろってことなんだろうけど
648 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 02:51:20.55 ID:tK1NbI7K.net] >>628 それはアプリケーション定義ファイルを設定しろと言ってるだけで EFをインストールしろとも参照設定しろとも言ってない 実際それじゃないが、メインアプリで参照設定なしでもアプリケーション定義ファイルを設定すれば動くのは確認した (当然アセンブリは参照できるところに存在する必要はある) なぜアプリケーション定義ファイルの設定が必要なのかは、EFのコンポーネントがデフォルトでそれを見に行くから 調べた感じではアプリケーション定義ファイルなしでも動くように出来そうだったけど、かなり手間かかりそうなので試してない 接続文字列だけなら簡単なんだが
649 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 03:54:18.19 ID:QQOP8UEs.net] >>629 MyDbLibraryを参照すれば、設定なしで複数のアプリで同じDBを簡単に 取得出来るようにしたかったんですが できなくはないけど、面倒そうですね んーやっぱりEF使わないでやったほうが後々楽かな 私事のためにお時間取らせてしまって申し訳ない 調べて頂いてありがとうございます
650 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 10:17:34.08 ID:gApUJ0pc.net] 教えてください ■質問1 下記のような構造体を配列にして内容を格納しています (本来はもっとパラメータは多いですが簡略して3つにしてます) struct test { private int id; //100000以上からの6桁 private string name; private int type; public Test(int ID, string Name, int Type) { id = ID; name = Name; type = Type; } } この構造体配列の中から該当するIDを検索し、その添え字番号を得たいです ForEachやwhileなどのループ内でIDを比較するしかないでしょうか? 「C# 構造体 検索」でぐぐってみたものの、 どのようにすればいいのかが見当もつきませんでした ■質問2 そもそも、このようなデータを構造体として用意するのは良いのでしょうか? 以上、よろしくおねがいします
651 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 10:48:27.07 ID:S9+EFBLU.net] LINQとかで検索するのもあるけど、Dictionary使うのがいいと思うが
652 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 11:23:47.79 ID:pl2PgCRK.net] C#とWPFでさくっとアプリを作れるようになりたいと思い、とりあえずC#の簡単なテキストは流し読みしたが… (他言語の経験はあるので) WPFはどのテキストを読んだらいいんだろう? (開発にはLivetを使うといいと聞いたけど、 通常のWPFが分かっていること前提っぽいので、ちゃんと勉強しようと思ってます) プログラミングWindows 第6版 上/下 が名著らしいけど、ストアアプリ特化で学習には向かない…? このスレ的にオススメのテキストを教えてくれないだろうか
653 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 11:45:20.22 ID:qE8APb0L.net] Livetは2年前ならともかく、今は作者が飽きているので薦めない Prismを使った方がよい テキストに関しては知らない 数年前ならEssentialを薦めただろうが いかんせん古すぎる WPに対応する必要がないならストア向けのテキストも無駄だろうな
654 名前:633 mailto:age [2015/11/08(日) 12:05:28.12 ID:pl2PgCRK.net] >>634 なるほど…今はPrismの方がいいのか。さんくす テキストは…ストアアプリは作る気がないしなぁ プログラミングWindowsのWPF XAML向けの解説は一応あるけど、 さすがにいちいち照らしあわせて読むのは大変そう blogs.msdn.com/b/shozoa/archive/2014/07/24/using-programming-windows-chapter1.aspx 結局テキストをどうしたらいいのかわからんね これを見つけたんだが、まだ去年のものだし古くもなく大丈夫だろうか?(同内容のkindle版もあり) www.slideshare.net/okazuki0130/wpf45-38048141
655 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 12:49:12.21 ID:cfidXKbm.net] >>631 List<T>でFindeIndex(s => s.id == searchID)とか でもidがprivateだな 検索数多いなら632が言うようにキーがIDの辞書作った方が速い
656 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 13:05:36.69 ID:qxSNyhqm.net] privateなプロパティを持っているとLINQで匿名型をnewしようとしてもアクセス出来ないレベル というエラーが出るしなあ そして匿名型はコンストラクタを呼び出す手段がないので次のようなコードがコンパイルできない ideone.com/QVNres
657 名前:631 mailto:sage [2015/11/08(日) 13:35:56.75 ID:gApUJ0pc.net] 回答ありがとうございます >>632 Dictionaryを詳しく調べてみます データを格納後に、Dictionaryで別途索引を作る…というイメージですよね、たぶん LINQも調べて勉強してみます >>636 FindIndexも調べてみます FindIndexは構造体のIDがprivateでなければ使えるのかな? なお、件数はおそらく多くなりますので、Dictionaryでいこうと思います >>637 構造体のつくり自体がそもそもまずいということですね データを扱うのに構造体が良さそうだと思い使おうとしていたのですが、 まだまだ勉強不足のようで…勉強し直します 匿名型というのも分かってないレベルです ひとまず頂いた回答・ヒントからいろいろ調べてやってみます つまづいてどうしようもなくなったらまた質問に来ますので その際はみなさんよろしくお願いします
658 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:11:47.01 ID:IOiPLIcZ.net] >>635 wpfのことは忘れてFormsアプリを作
659 名前:驍だ [] [ここ壊れてます]
660 名前:633 mailto:sage [2015/11/08(日) 14:13:41.26 ID:pl2PgCRK.net] >>639 今あえてWPFでなくFormsを学ぶ理由は何なんでしょう?
661 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:21:58.19 ID:qxSNyhqm.net] 匿名型やめて普通にnewすれば行けるよ この場合でも読み出し専用のプロパティは必要だけど ideone.com/VQnbmB
662 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:22:03.96 ID:qE8APb0L.net] そりゃあ情報量だろ
663 名前:633 mailto:sage [2015/11/08(日) 14:24:04.50 ID:pl2PgCRK.net] >>642 なるほどな…すまんが、それでもやっぱりWPFでいきたいわ 情報量が、と言うならC++でもやってろ、という話になるので
664 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:26:58.36 ID:qxSNyhqm.net] それとToArray()はこの場合は不要だった 遅延評価でいいや それとインデックスが不要なんだから(tt, n)でなくて(tt)でいい 適当に書いたからいろいろおかしかった
665 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:28:16.90 ID:jwSrphbk.net] フォームアプリだとストア対応はまた別スキル?
666 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:48:07.12 ID:t8ezhEA7.net] WPFはマイクロソフトからもとっくの昔に見捨てられたコンテンツだからな 2010年くらいからほぼ更新されてない 開発者も減ってるし今更やっても無駄 そんなのやるくらいなら注目度高いElectronでもやったほうが100倍モチベーション上がるだろ
667 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 14:48:47.97 ID:0dVpsRSu.net] >>638 キーが決まってるならKeyedCollectionなんてのもある 構造体orクラスの問題は、大抵の場合、クラスの方がいい 構造体はnewのコストが問題になった時に試してみればいい
668 名前:633 mailto:sage [2015/11/08(日) 15:05:42.53 ID:pl2PgCRK.net] >>646 すまん。Electronも考えたんだが、いかにもWebアプリっぽい見た目と動作になるのが気持ち悪くてなぁ… WPFは見捨てられたと言うのであれば、皆WindowsでGUIアプリを作るには何を使ってるんだろう?
669 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 15:10:08.20 ID:qL6T2MEr.net] >>646 .Net4.6で改良されてるし、どこまで本気か分からないけど最近微妙にやる気出してるようだよ。 blogs.msdn.com/b/dotnet/archive/2014/11/12/the-roadmap-for-wpf.aspx
670 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 15:14:56.34 ID:b5oYWyCu.net] フォームのほうが見捨てられてるからWPF以上に未来はないと思うが、だからといってWPFに乗り換える気が起きない。 んで結局、フォームから未だ抜け出せずにいる。
671 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 15:18:18.25 ID:t8ezhEA7.net] これからはWPFと言いながら10年近く全く普及せずに下降線を辿ってきたからな だいたいGUIアプリにしてもWindowsデスクトップに固執するような時代はとっくに終わってる
672 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 15:51:44.93 ID:+dkH7XCP.net] WPFは早期に標準コントロールを充実させていれば多少は広まったんじゃないのかな
673 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 16:09:34.75 ID:b5oYWyCu.net] MVVMだなんだの言いながらデフォルトでそれ系のまともなフレームワークが入ってないのが敗因だろうな。
674 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 16:21:43.65 ID:IOiPLIcZ.net] wpfのまともな文献がないというのが このFrameworkの実態を表しているような気がするね ネットにあるのは、Formsとは違うんです!っていう営業トークか MVVMという概念がすごいんですってだけだろ 実際MVVMが必要になるような高度なアプリケーションなんてあるのか? リアルタイムにデータを処理するにしてもイベントドリブンモデルのほうが簡潔で扱いやすい MVVMはオブジェクト指向を「こじらせた」典型例だと思うんだよね
675 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 16:40:41.80 ID:qWpIgAsz.net] >>654 いや英語では結構本出てるよ。 MVVMがウンコなのは同意するけどw
676 名前:デフォルトの名無しさん mailto:sage [2015/11/08(日) 16:57:42.27 ID:qE8APb0L.net] 設計がとにかく野暮ったい 僕の考えた最強の〜って感じ 引き算を覚えてくれ頼むから WPFを
677 名前:除けば成功しているMVVMフレームワークはいくらでもあるし 設計センスの問題だと思う [] [ここ壊れてます]