[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/06 12:24 / Filesize : 269 KB / Number-of Response : 1039
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



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フレームワークはいくらでもあるし
設計センスの問題だと思う
[]
[ここ壊れてます]






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

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

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