[表示 : 全て 最新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/

730 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:11:06.49 ID:Roxx949g.net]
iOSアプリの開発はAndroidアプリより30%安価--あるソフト開発会社が示したデータ
japan.zdnet.com/article/35073153/

また、Infinumは開発時の経験から、
Androidアプリのレイアウトで用いられるXMLの使われ方が、iOSで用られるWYSIWIGによるアプローチ
ほど効率的でない点を指摘している。


まさにこれ、xamlの不利な点もこれに同じ
対してiOSはformsの発展系みたいなシステムだから即効作れる

731 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:21:31.22 ID:/+peIgnx.net]
>>703
>>703
要素のシーケンス?
IEnumerable<T>は列挙される要素の順序なんて保障しないし
列挙される要素を返すオブジェクトの事だろ

要素でもないしシーケンスでもないじゃないか

732 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:33:42.89 ID:1POahPwI.net]
蛇遣いなのでイテラブル/イテレータ

733 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:35:00.27 ID:hQ+Ng6ni.net]
マイクロソフトがシーケンスって呼んでるんだから、シーケンスって呼べよ
混乱の元

734 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:36:20.71 ID:hQ+Ng6ni.net]
俺何でも知ってる、賢いだろうw
と、話が通じない流れはこうして始まる

735 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:39:46.19 ID:1POahPwI.net]
下品な単芝だなぁ

736 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:45:36.61 ID:/+peIgnx.net]
>>710
MSの用語で、列挙で返されるものをシーケンスと呼んでいるところはあるけど
IEnumerable<T>実装クラスのことをシーケンスと呼んでるところなんて無いだろ

737 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:47:40.91 ID:hQ+Ng6ni.net]
話聞かない回答者がまた暴れだす、死ね

738 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:59:29.52 ID:2vpVS7Y/.net]
こんな時間からID真っ赤にしないようにちゃんと変えとくんだゾ



739 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 00:59:45.55 ID:jhfL3S8B.net]
Enumerable.SequenceEqualとかまさしくシーケンスじゃないの?

740 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 01:04:34.29 ID:qdWTE3pv.net]
TupleのitemXって任意名称に変えられないのかね
使いたいけど、itemXが何を指すのか明示し辛くて毎回クラス作る羽目になる

741 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 01:13:37.70 ID:MPuvgpwO.net]
>>717
C# 7.0でそこらへん改善しようという動きはあるが、現状だと無理だな。

742 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 02:15:32.79 ID:J1zmvVNV.net]
>>713
言いたいことは分からんでもないが列挙で返されるものは要素であってシーケンスじゃないよw

ニュアンス的には、イテレーターやクエリ式みたいにIEnumerable<T>を実装したクラスであるかのようにふるまう
何者かのことをシーケンスと呼んでるようにも感じるけど、機能的に等価なんだから同じでしょ。

743 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 02:24:54.15 ID:/+peIgnx.net]
>>716
IEnumerable<T>で返される集合がシーケンス、その構成物が要素
IEnumerable<T>そのものは要素でもシーケンスでもない

まあ仮に、IEnumerable<T>そのものがシーケンスと呼ばれるとしても
IEnumerable<T>実装クラスはシーケンスじゃないし

744 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 02:27:02.08 ID:dpUw/w5G.net]
IEmunerableを実装したクラスはIEnumerableと呼んでるな

だってIEnumerableとして使うわけだし
もと質問者の求める答えとはちょっと違うか・・・

745 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 04:08:25.76 ID:MPuvgpwO.net]
IEmunerable<T> Hoge() みたいなメソッドのサマリーを書くとして、「○○を列挙します。」と説明するのが一番自然だと思う。
「○○のコレクションを返します。」だと、List<T>とか配列のようなものが返されるイメージだし、「○○のシーケンスを…」だと違和感が残る。

746 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 05:06:28.14 ID:FnAxvR+K.net]
全然知らないんですがMoveNextとかはEnumerator実装ですよね?
Enumerableでも使えるのはGetEnumeratorでEnumerator取ってるからですか?

747 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 10:46:36.52 ID:MPuvgpwO.net]
IEnumerable<T>の定義を見てみよう。

748 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 17:51:33.59 ID:jH4gdhBC.net]
ある文字列の中で、2つのキーワードの中にある文字列をLINQを使って抽出したいのですが、やり方が分かりません。
例えば、下の文字列の
「ABCD<a>123</a>EFG」
の中から、<a>と</a>に囲まれた部分だけを取るという事がしたいのです。



749 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 17:55:09.09 ID:DUfHt6hF.net]
バカには無理

750 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 17:55:24.62 ID:h0434h88.net]
なぜLINQでやろうと思った?

751 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 18:08:23.13 ID:Usz+Er1r.net]
縛りプレイもしくは宿題

752 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 18:20:02.61 ID:+wF1gX1q.net]
おまえらどんだけLINQが嫌いなんだよ〜
立て続けに素晴らしい連体感だなww

753 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 18:20:11.07 ID:jH4gdhBC.net]
>>727
最終的にしたいのは、大きめのファイルをFile.ReadLinesを使って読み込み、その中から特定の文字列を取りたいのです。
File.ReadLinesでLINQを使って(正規表現併用でもして)抽出できないのかと、思案してる所です。

754 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 18:23:29.23 ID:87RveuhT.net]
>File.ReadLinesを使って読み込み

まずそこから間違ってる

755 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 18:40:07.71 ID:YDOXgbvn.net]
ABCD<a>12<a>3</a>EF</a>G

みたいなのはどうする?

756 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 18:53:04.03 ID:jH4gdhBC.net]
>>731
巨大なファイル内にある特定の文字を取りたくて、File.ReadLinesを使おうと思ったのです。
ちなみに、これを使う事になったのは↓のサイトの処理速度を見てこれは使えそうと思いました。
ttp://devlights.hatenablog.com/entry/20101116/p2

>>732
<a>〜</a>の組み合わせは今のところ一つだけを想定しています。

757 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 19:05:23.62 ID:MPuvgpwO.net]
巨大のファイルをFile.ReadLinesで読み込むのはちょっと…ってのはおいといて

var urls = File.ReadLines( @"hoge.txt" )
  .Where( x => !string.IsNullOrWhiteSpace( x ) )
  .Select( x => Regex.Match( x , "<a href=\"(?<url>.*?)\".*?>(?<text>.*?)</a>" , RegexOptions.IgnoreCase ).Groups["url"]?.Value )
  .Where( x => !string.IsNullOrWhiteSpace( x ) );

みたいにすれば取り出せるだろうけど

758 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 19:21:42.43 ID:jH4gdhBC.net]
>>734
ソース有難うございます。
まだ、不明な点がありますが調べてみます。



759 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 19:35:10.88 ID:hQ+Ng6ni.net]
別にLINQ嫌いじゃないが、そんな事すんなよなとは思ったw

760 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 19:36:07.54 ID:ZERl/AOH.net]
>>734
ReadLinesは遅延評価だからReadAllLinesとは違って巨大なファイルでも効率いいよ

761 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 19:40:57.26 ID:MPuvgpwO.net]
>>737
すまん、ああ、それと勘違いしてた…

762 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 19:41:01.76 ID:YDOXgbvn.net]
改行をまたいでたらどうすんだってことだろ

763 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 19:46:45.62 ID:MPuvgpwO.net]
そこは想定外ってことで…

764 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 20:06:32.47 ID:je1SKr0C.net]
WindowsFormアプリケーションを勉強中ですが、タブレットPCでもWindowsFormは動作しますかね
実機に触ったことがないのでよくわからんのですが、
Windows8やWindows10あたりが入ってるタブレット端末なら作ったWindowsFormのアプリも
使えますでしょうか?(画面サイズを考慮して作るのは当然として)
それともストアアプリとしてじゃないと入れられなかったりするんでしょうか

765 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 20:15:23.36 ID:MPuvgpwO.net]
>>741
特に問題なく動作可能。
ただ高dpi環境とかで動かすと残念なことになるかも知れないけど

766 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 2 ]
[ここ壊れてます]

767 名前:2:32:02.21 ID:WW0Z/7Lv.net mailto: 無関係だが

スレタイにはちゃんと
(初心者用)
と書かれているよな
[]
[ここ壊れてます]

768 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 23:20:47.01 ID:hQ+Ng6ni.net]
向き不向きは考えた方がいいかもね
LINQで文字列処理とか、Formでモバイル系とか



769 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 23:55:46.17 ID:2kBONmlk.net]
データの集まりに対する統一的な操作だからね

770 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 00:25:57.38 ID:b15uPX39.net]
実際にどうか分からんが、件のデータがhtmlだとしたらHtml Agility Packなんか使ったほうがトラブルに巻き込まれずに済むかもしれんね

771 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 02:25:12.08 ID:NUMUMJ+D.net]
LINQは同じようなデータに対する処理を書くものだから正規表現とかやるならLINQである必要性が薄い
たとえばnew{Name, Kokugo, Sansu, Rika, Shakai}みたいなクラスを作れる成績表ファイルだったらFile.ReadLinesでLINQが有効

>>734のやりかたなら普通にforeachしたほうがわかりやすいと思う
var list = new List<string>();
foreach(var line in File.ReadLines( @"hoge.txt" )){
if(!string.IsNullOrWhiteSpace(line)){
var str = Regex.Match(line , "<a href=\"(?<url>.*?)\".*?>(?<text>.*?)</a>" , RegexOptions.IgnoreCase ).Groups["url"]?.Value;
if(!string.IsNullOrWhiteSpace(str)) list.Add(str);
}
}

772 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 07:56:05.65 ID:Los5n9AY.net]
求めてるのは分かりやすさではなく自己満足だ
余計な世話を働くな

773 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 07:58:25.66 ID:FwVQMCtV.net]
どう見てもLINQの方が見易い

774 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 08:03:54.52 ID:dubRMvMU.net]
そうだな
このケースは実質的には
行の集合→フィルタ→変換→フィルタ→結果の集合
という要素ごとに独立な集合操作なのでLINQを使うのはおかしくはない

775 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 09:27:42.54 ID:b15uPX39.net]
htmlのタグは行をまたぐことも多いから、行の集合体として処理するとエライ事になるよ

776 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 17:10:09.52 ID:2y0wDvFa.net]
>>747
foreach使ったら遅延の意味ないし
さらに新たにlist作ってるのが古臭い

777 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 18:06:53.36 ID:sljIQlRZ.net]
>foreach使ったら遅延の意味ないし


778 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 19:38:54.77 ID:Ky5LrglX.net]
今時2.0のレガシーなソースコードを流用しないといけないんだけど、XML Webサービスと型付データセットでこれををEFとEDMに置き換えることによるデメリットって何かある?
ちなみに同一アセンブリ内からしか呼び出ししてないのになぜかASP.NETでWeb参照作ってSQL Serverと接続させてる元開発者の意図が読み取れないんだけど・・・



779 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 19:45:39.77 ID:EC9THrMO.net]
>>754
今となってはEFだからとコードファーストにする必要も無く、既存のDBから作れるし別に問題ないんじゃね
動作環境を4.5.2にしないと来年早々にサポートが切れることぐらいか

780 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 20:05:38.85 ID:yYqeH5aP.net]
わざわざList<T>なんぞ作らず、yield returnにしておけばいい。
それならforeach使おうが、遅延評価されるやろ。

781 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 20:18:02.90 ID:sljIQlRZ.net]
??

782 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 20:58:20.79 ID:VAIEdV8u.net]
脳に障害でも抱えてんのかお前

783 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 21:23:02.20 ID:cKAT5bUn.net]
すみません。
すぐ片付けますので。

784 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 22:04:08.00 ID:Ky5LrglX.net]
>>755
いやどっちみち既存DB使うからデータベースファーストなんだけど、SqlCommandじゃなくてLINQ to Entity使いたいからEFなんだよ

785 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 22:07:54.82 ID:EC9THrMO.net]
>>760
何が言いたいのかわらかないけど、使いたいなら使えとしか・・・

786 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 22:14:13.84 ID: ]
[ここ壊れてます]

787 名前:VAIEdV8u.net mailto: ファイト一発 []
[ここ壊れてます]

788 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 22:27:48.52 ID:AjxvVfcS.net]
>>760
今なら既存DBからコードファーストというオプションが存在するんだぜ

LINQ使いたいだけならLINQ to DataSetって方法もあるぞ
既存コードの量にもよるけど、既存コード全部修正してまでEF導入するほどのメリットがあるのか
あるいはEFとADO.NET直接や型付きデータセットを混在させるのは容認されるのか



789 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 22:38:34.20 ID:2y0wDvFa.net]
>>753
本当に分からないの?

すべての要素を実体化させてるからなんだけどね。

790 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:05:26.00 ID:+tTEt6jT.net]
>>764
ごめん
俺もわからん
解説plz

791 名前:デフォルトの名無しさん [2015/11/12(木) 23:08:48.25 ID:qQwabUEl.net]
お世話になります。
非同期処理でUIにアクセスするさいにBeginInvokeを使っているのですが
回転数が少なく条件にマッチしない場合BeginInvokeの方が先に終わってしまうのか
labelの方は100000と書いてあるのに終了のメッセージボックスがしばらくしないと出ない感じに
なってしまいます。。


Taskスタートのつもり
{
for (j = 0; j <10000; j++)
{
メソッド1(j);
bool flg=メソッド2(j);
if (flg) this.Invoke(new Action(() => HITLabel.Text = "hiT"));
this.BeginInvoke(new Action(() =>進行Label.Text=j+1.ToString()));//
}

//ループ終了 
});

MessageBox.Show("完了せり");

とこんな感じでかなりあれなんですが・・・
Invokeにすれば同期できるんですが終了待ちする関係で
時間が掛かってしまい3秒くらい追加になってしまうようです。
BeginInvokeを使いループ終了と同期させる方法がないでしょうか?
200万ぐらいから同期するみたいなんですが。

792 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:13:38.94 ID:Dz+qxRLQ.net]
>>764
遅延評価させる意味というか目的を教えてほしい。

793 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:19:26.88 ID:dubRMvMU.net]
>>766
それjが一つだから進行Label.Textは最初から全部10001になるだろ
BeginInvokeは引数を渡せるオーバーロードがあるから進捗情報はそっちで渡せ
jをループ内で宣言し直す方法もあるけど、
コンテキストをまたがって変数を共有するのはトラブルの元なので極力避けることをお勧めする

794 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:29:31.65 ID:qQwabUEl.net]
>>768さん

アドバイスありがとうございます。
jの件仰るとおりでした

それと肝心のBeginInvokeですがつまりActionではなく
デリゲードを生成してそちらに引数を渡せば解決するということでしょうか?

795 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:35:00.45 ID:yYqeH5aP.net]
そもそも、今の時代にBeginInvokeなんか使ってるのが間違い。
Task.、async / awaitを使うべき。

796 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:45:09.01 ID:qQwabUEl.net]
>>770さん
仰る通りだと思うんですがasync/awaitは4.5?でしたか。環境が駄目でorz

797 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 23:52:28.74 ID:FwVQMCtV.net]
foreach使ったらダメとか思い込んでる奴は恐ろしいな
遅延評価は最後のforeachのためだぞ

798 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 00:05:42.71 ID:0XMaJRAY.net]
LINQの話が自演荒らし臭くなってきた



799 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 01:32:54.47 ID:mVyjF6P7.net]
Linqで作成したqueryをforeachにかけるならいいけどね

800 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 03:14:28.15 ID:fOj/PJch.net]
もしファイルが巨大ならスレッドブロックしちゃうし、listに追加したらメモリ使い果たしちゃう
状況にもよるけど、別スレッドでファイルとかに逐次書き出すとかが理想

801 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 07:05:08.20 ID:iH7KAiTO.net]
>>771
blog.xin

802 名前:9le.net/entry/2012/12/26/125214

4.0でも使えないわけじゃない
[]
[ここ壊れてます]

803 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 21:50:19.26 ID:WHtd9CIG.net]
>>768さん
private delegate void デリゲート(int n);
private void 進行表示なのよさ(int n)
{
進行Label.Text=n.ToString()));//
}

デリゲート デリゲート進行なのよメソッド= new デリゲート(進行表示なのよさ);
this.BeginInvoke(デリゲート進行なのよメソッド, new object[] { j });
と渡しましたけど無事に死亡確認しました。orz
変らず・・・・

なんか5万でやったら処理が間に合わないのかデッドロック


>>776さん

あっライブラリーを別にインストールしてやる感じですか。
ありがとうございます。 

804 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 21:56:43.98 ID:qRfCc0Iv.net]
なんでわざわざdelegate宣言してんの?
特別、ref とか outを使いたいとかじゃない限り、Action<T>、Func<T> を使うべき。

805 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 22:05:31.10 ID:WHtd9CIG.net]
>>778さん

あっ宣言しなくても省略できるんですか・・
void Action<T>(T obj)・・これは知らなかったです・すいません。
Tにメソッドを入れて引数にT objを指定する感じですかな。
どうにも疎くて;;

806 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 22:11:25.68 ID:v46Ke5nq.net]
死ねアッチョンブリケ

807 名前:デフォルトの名無しさん mailto:sage [2015/11/13(金) 22:16:22.98 ID:qRfCc0Iv.net]
.NET 4.0ならBeginInvokeとかInvokeとか使わずTaskを使うといい。

Task.Factory.StartNew( () =>
{
    // 別スレッド
    Thread.Sleep( 3000 ); // 重い処理のつもり
    return 1000;
} ).ContinueWith( task =>
{
    // UIスレッド
    this.label.Text = task.Result.ToString();
} , TaskScheduler.FromCurrentSynchronizationContext() );

808 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 00:12:23.08 ID:PWAfQw+v.net]
>>781
非UIスレッド側からUIスレッドにイベントを通知したい、なんてケースもあるので万能じゃないけどね。



809 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 00:28:17.73 ID:zC8KxVmn.net]
>>782
そういうのは、Rx使ってる。

810 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 00:45:14.09 ID:JMgFPTs6.net]
.NET MVCで画面作るときに
viewに複雑のユーザー定義クラスを渡す時ってカスタムbinderつくるしかない??

例えば検索フォームと一覧で構成される画面で
検索フォームmodelと一覧modelをバインディングするみたいな。

811 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 01:45:16.57 ID:J/xjBQ6p.net]
何をわけの分からんことを

class 俺モデル
{
public 検索フォームmodel M1;
public 一覧model M2;
}

これをモデルとして渡せばOK

812 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 02:49:03.10 ID:JMgFPTs6.net]
>>785
view側で

@TextBoxFor(m => m.M1.Unko)
@TextBoxFor(m => m.M2.Chinko)

みたいなのをformで送ったが、
ActionメソッドをIndex(俺モデル myModel)
としても、値とってこれないんだよね

813 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 02:56:01.24 ID:T0Fy32Ow.net]
>>781の兄者・・

駄目でした;;
既にtaskは使っていて
var task1 = Task.Factory.StartNew(() =>
これの終了に別のタスクで繋いで終了表示をしてるんですが
781の兄者のやり方のとおりに子タスクを設定してみたんです。
したら親タスクのつなぎタスクに繋がらないときがあるみたいで;;
なんで繋がなくなる時がある上に終了してるのに
終了ウィンドウがしばらくしないと出ないのか・・
きっと妖怪のせい・・

814 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 11:18:55.84 ID:10oOQI9U.net]
まず日本語が、正しく以下略

815 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 13:23:53.12 ID:m53r0/yX.net]
こういうのを見ているとTaskチェインよりもawaitの方がスマートだというのがはっきり分かるな

816 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 16:57:33.34 ID:g6rNXfjz.net]
>>786だけど
getter setterつけたらいけたわ。

817 名前:デフォルトの名無しさん [2015/11/14(土) 18:56:20.98 ID:OxpghztZ.net]
今unityでゲームを作ってるんですがc#のクラスの配列について質問です
こういうコードがあるとします
public class Aa{
int i;
string b;
public Aa(int iH,string bH){
i=iH;
b=bH;
}
}
Aa [] aa=new Aa[]{
new Aa(10,"aaa"),
new Aa(20,"bbb")
};
これでコンパイルは通るのですがこの後半に書かれたクラスの配列の初期化が
なんとも気持ち悪くて仕方がありません
これから何百行もクラスの初期化のコードを書くつもりなのでnewとかAaとかが無意味に並んでる辺りが
非常に醜いと思います
もっと初期化を簡略化する書き方はないでしょうか?

818 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 19:13:53.28 ID:nPG81Nq1.net]
設定ファイルを別に用意して for ループかなにかでインスタンス作るのはダメなん?



819 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 19:15:20.30 ID:Ldro2YxR.net]
>>791
ファイルに出せ

820 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 19:16:41.03 ID:x0D1OM5m.net]
>>791
それが無駄だと全然思わないんだけど、

static Aa[] ToAaArray(params string[] args){...}

みたいなメソッドでも用意するとか。

821 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 19:21:51.68 ID:0hbObyK2.net]
ゲーム作ってますと何百個のクラス作ってますがどうしたらいいでしょうか
はワンセットになりつつある

822 名前:デフォルトの名無しさん [2015/11/14(土) 19:22:29.23 ID:OxpghztZ.net]
>>792
>>793
ファイルに出すというのはテキストファイルを別に作って読み込むという方法でしょうか?
それも考えたんですけどそれだとテキストファイルを作る時引数の入力補完が効かなくなって
かえって間違えやすくなると思うんですけど

>>794
入力補完を利かすため引数のデータをデータ型通りの形で並べたいんですけどどうしたらいいですかね

823 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 19:35:41.52 ID:zC8KxVmn.net]
>>791

var aa = new [] { new Aa( 10 , "aaa" ) , new Aa( 20 , "bbb" ) };

824 名前:デフォルトの名無しさん [2015/11/14(土) 19:39:17.01 ID:OxpghztZ.net]
>>797
外側減らしたって意味無いすよw
中が圧倒的に多いんだから

825 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 19:44:59.12 ID:zC8KxVmn.net]
外部にテキストファイル、例えばcsvなんかを用意して読み込むようにするか、
もしくは、partial class を作って別ファイルにメソッドを隔離しておくか。

826 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:08:15.99 ID:nPG81Nq1.net]
>>796
入力補完?
入力候補が決まってるなら、EXCEL でも使ってセルの入力規則のリストでも利用すればすむ事じゃん。
こっちの方が列で管理出来るから引数の順番とか間違えなくて(その意味では)便利だろ。

別にお前に限ったことじゃないけど、条件の後出しはよせ。正直ムカつく。

827 名前:デフォルトの名無しさん mailto:sage [2015/11/14(土) 20:10:22.93 ID:FGqqqIfB.net]
>>798

テキストファイル読み込んで作るか、もしくはnewをいっぱい書くのが普通だと思うけど
それでも無理やり減らそうと考えるならこれかな。

var aa = new List<Aa>();
var elements1 = new[] { 10, 20, 30 };
var elements2 = new[] { "aaa", "bbb", "ccc" };
for(int i = 0; i < elements1.Length; i++)
{
  aa.Add(new Aa(elements1[i], elements2[i]));
}

これだとタプルを分解して書かないといけないから不満が残るけど
(10, "aaa")のような形でインスタンスを作れない以上どうしようもない気がする。
最近C#触っていないからもっといい方法があるかもしれないが。

828 名前:デフォルトの名無しさん [2015/11/14(土) 20:18:02.62 ID:OxpghztZ.net]
>>800
基本的にunityのmonodevelopで完結させたいんだよね
monodevelopは使い方も知ってるし
>>801
それだと例えば1番目なら1番目の項目の書いてる場所がバラバラになってしまって
とても管理出来そうにない

みなさんありがとうございました
自分が今まで致命的な勘違いをしてた訳じゃないとわかっただけでも収穫でした
newとクラス名連打で作りたいと思います



829 名前:デフォルトの名無しさん [2015/11/14(土) 20:23:51.44 ID:vsCbl3R/.net]
テキストファイル作る時の引数って意味がわからん。
オブジェクト作成時に値チェックかけて、
整合性が保証されてる状態で書き出せばいいだろ。

830 名前:デフォルトの名無しさん [2015/11/14(土) 20:27:37.98 ID:OxpghztZ.net]
>>803
それだと実行させなきゃエラーを出せない
unityのmonodevelopは初期化の時引数の型が間違ってたら書いたその場でインフォメーションしてくれる






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

前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