C#, C♯, C#相談室 Part91 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/06/29(水) 23:45:15.36ID:EZjVZgG6http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1437808445/
C#, C♯, C#相談室 Part89
http://peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0153デフォルトの名無しさん
2016/11/10(木) 16:33:44.59ID:aHkFnxegWEBを見たら、いろいろと説明が書いてるがどれも分りにくい。
C#でもVBでも1日も触っていたら、そこそこ使えるようになる。うろ覚えでも
プログラムはできる。
WPFは説明が中途半端なので肝の部分がはっきりしない。
バインディングするんならイベントもちゃんとバインディングしないとだめだわ。
バインディングを間違っていても反応なしだしな。W エラーすらチェックできてない。
中途半端。
0154デフォルトの名無しさん
2016/11/10(木) 17:47:19.45ID:riiUw9jl0155デフォルトの名無しさん
2016/11/10(木) 17:49:55.89ID:ApowNrKS0156デフォルトの名無しさん
2016/11/10(木) 19:15:21.25ID:pqjjw4yY拒絶するのは勝手だがいちいち布教しようとするのはウザイ
0157デフォルトの名無しさん
2016/11/10(木) 19:22:39.57ID:CGPJd07S0158デフォルトの名無しさん
2016/11/10(木) 19:23:04.26ID:ApowNrKS0159157
2016/11/10(木) 19:31:03.19ID:CGPJd07SIEで動画見ながら、IEがダウンロードしてるデータがストリーミング動画かどうかを判断して、動画ならIEの画面に表示される前に手を加えたいんです。
0160デフォルトの名無しさん
2016/11/10(木) 19:36:34.41ID:hirKpSKv0161デフォルトの名無しさん
2016/11/10(木) 20:17:59.57ID:13nZCkn2自分が使うのは無理だ参りましたと思ったら使わなければいい
ただどちらを選択したかは別に他人に伝えなくていい
0162デフォルトの名無しさん
2016/11/10(木) 22:17:57.52ID:c1KzPo7d現実的な内容じゃない
基本的に無理
プロキシ―作っても動画をいじれる技量が君にあるとは思えない
0163デフォルトの名無しさん
2016/11/10(木) 23:07:13.32ID:pEVMYV3pIEは、オープンソース(OSS)じゃないから、改造するのは難しい。
OSSは、Firefox, Chromium, Safari
Atom, Visual Studio Code, Electron は、Chromiumを使っている
0164デフォルトの名無しさん
2016/11/11(金) 03:04:38.37ID:+gNs9Nbk君はWPFどころかC#もよく理解できてないみたいだから、C#入門書からスタートするのがおすすめ
0165デフォルトの名無しさん
2016/11/11(金) 04:07:56.66ID:KgVthd+hストリーミングをやるコンポーネントはあるだろ。そのデータ取り込み部分を
バッファリングして中を加工すればいいだけだろ。W
画像認識をするのかな?
0166デフォルトの名無しさん
2016/11/11(金) 07:05:40.26ID:KgVthd+hICommandを実装する理由はなんだ?
ttp://www.atmarkit.co.jp/ait/articles/1011/09/news102_3.html
これは読んでいくとよくまとまっているが、これだけでは難しすぎて
何を言ってるんかわからん。まるでMS。
そもそもICommandってなーに?
1. 処理の実行可否を状態として持つ、また状態の変更を通知
2. XAMLからメソッドの呼び出しはコードビハインドしか利用できないが、ICommandはバインドが利用でき別クラス(ViewModel)の処理を呼び出すことができる
中身は
public interface ICommand
{
void Execute(object parameter);
bool CanExecute(object parameter);
event EventHandler CanExecuteChanged;
}
0167デフォルトの名無しさん
2016/11/11(金) 07:07:03.74ID:zUQAdwQM0168デフォルトの名無しさん
2016/11/11(金) 07:08:21.41ID:KgVthd+h優れた例を提示しておく。
優れた例
XAML
<TextBox Text="{Binding Name}"/>
<Button Content="実行" Command="{Binding ExecuteCommand}"/>
<Label Content="{Binding Result}"/>
ViewModel
public DelegateCommand ExecuteCommand { get; }
public MainWindowViewModel(){
ExecuteCommand = new DelegateCommand(() => Result = "登録OK", CanExecute);
}
private bool CanExecute(){
return !string.IsNullOrWhiteSpace(Name);
}
private string _name;
public string Name{
get { return _name; }
set { if (OnPropertyChanged(ref _name, value)) ExecuteCommand.RaiseCanExecuteChanged();}
}
0169デフォルトの名無しさん
2016/11/11(金) 07:09:49.57ID:KgVthd+hコンストラクタの中でインスタンス化
() => Result = "登録OK"
これはなんやねん? このアクションの書き方がわからんなーという人。
ラムダ式、、、初めて聞いた?
0170デフォルトの名無しさん
2016/11/11(金) 07:13:06.18ID:KgVthd+hC#の方が難しいわ。まあでも何とか動かせる。WPFもBindingだけわかったので何とか
使えるレベルにはなったな。
問題はMVVMパターンだな。
MVVMじゃなくてM-VM-VかV-VM-Mでないとだめだよな。VVMMの方がいいと思う。
0171デフォルトの名無しさん
2016/11/11(金) 07:23:51.87ID:KgVthd+h1.Bindingの理解
2.「優れた例」でVVMM(またはMVVM)を理解する こっちはまあボチボチでもOK
MSの文書は酷いがIT−PROの文書は体裁としてはよくまとまってはいるが説明が難しい。
第一に例が悪い。
第二に例にセンスがない。
第三に例の説明が下手。
単純化したシンプルな例で示さないと「俺はこんなにすごいんだぞ」みたいな
複雑な例では分からん。
0172デフォルトの名無しさん
2016/11/11(金) 08:31:34.35ID:KgVthd+hコードビハインドをVMにしたらいいんではないか? VとのIFはここで全部やった
らいいと思うがな。
なんか必要性がいまいちわからんなー。
0173デフォルトの名無しさん
2016/11/11(金) 08:51:31.09ID:qDFZLZyC必要性が何なのかちゃんと調べたのかい?
0174デフォルトの名無しさん
2016/11/11(金) 09:40:30.93ID:yIFyhkZ00175デフォルトの名無しさん
2016/11/11(金) 09:43:11.94ID:M2uBl8fvラムダ式は、Java, JS, Rubyなど、たいていの言語にある
例えば、独自の方法で、ソートしたい場合、先に比較関数を定義してから、
その関数を引数として、sort()に渡す
比較関数{ ここで定義する };
sort(比較関数);
ところが、先に定義するのは面倒だから、sort()の引数の所で、
匿名(無名)関数として定義して、そのまま引数として渡せれば、簡単。
それの糖衣構文で、関数宣言も無くしたのが、ラムダ式
JSで書くと、
var a = ["Hydrogen", "Helium", "Lithium", "Beryl-lium"];
匿名関数・ラムダ式
var a2 = a.map(function(s){ return s.length });
var a3 = a.map( s => s.length );
0176デフォルトの名無しさん
2016/11/11(金) 13:38:45.67ID:KgVthd+h使わないかな。
右も左もわからないのにアンドロイドアプリ(簡単なんだが、、)を作る
羽目になってしまった。しかしXamalinダウンロードしてみたらXamlに似ていて
驚いたわ。W
WPFを勉強したかいがあった。これからバリバリつくってみる。
0177デフォルトの名無しさん
2016/11/11(金) 18:30:50.13ID:ciOc6C5W例えば、List<string>をList<object>に変換したい時、
var hoge=list.map(x=>(object)x);
だけで良い。foreachとかで書くより楽で読みやすい
0178デフォルトの名無しさん
2016/11/11(金) 18:55:28.67ID:+ZeaIXfwやっぱりラムダ式が便利だと感じる
0179デフォルトの名無しさん
2016/11/11(金) 18:56:03.62ID:qDFZLZyCXamlに似てる?勘違いしてんぞお前
0180デフォルトの名無しさん
2016/11/11(金) 18:57:11.76ID:0OJ17qIgList<T>.ComvertAll<TOutput>(Converter<T,TOutput>)ではダメなんか?
0181デフォルトの名無しさん
2016/11/11(金) 19:20:11.62ID:KgVthd+hXamlそのものだわ。C++もC#のFormもXmalinUIもあって、3種類の開発環境がある。
まともに動けば凄いよ。W
でもサンプルを動かしたまではすんなりいったんだが署名ができないとか、文字ばけ
するとかどうも先が思いやられるのでxamalin
やめてAndroid Studioにしようかと迷ってる。こっちはJavaだけど、、
0182デフォルトの名無しさん
2016/11/11(金) 19:58:04.56ID:JZCe9Y2P0183デフォルトの名無しさん
2016/11/11(金) 20:14:46.10ID:tUVkv4AT0184デフォルトの名無しさん
2016/11/11(金) 20:20:02.48ID:TqB+9XQ40185デフォルトの名無しさん
2016/11/11(金) 20:27:50.64ID:nfVHRfzRc#初心者スレがあるからそっちにいった方がいい
いい加減うっとおしい
0186デフォルトの名無しさん
2016/11/11(金) 20:46:50.11ID:KgVthd+h0187デフォルトの名無しさん
2016/11/11(金) 20:49:06.76ID:nfVHRfzR0188デフォルトの名無しさん
2016/11/11(金) 21:09:36.24ID:TOO7Y3Ld0189デフォルトの名無しさん
2016/11/11(金) 22:25:05.87ID:+gNs9NbkXamarinはC#に相当慣れ親しんでるか、androidもiOSもそこそこやってる人がまとめて開発したいって場面以外ではまだおすすめできる状態じゃないかな
まだ情報も少ないし、ラムダ式とかイベントとかの基本を自力で調べられない人には特に厳しいと思う
0190デフォルトの名無しさん
2016/11/12(土) 20:58:13.68ID:RWma0It4まずエミュレータが動かない
WindowsPhoneが頑張ってくれてたら
引き続きVisualStudioで開発できたのに
どうしてここまで差を付けられたのか
MSってエリート揃いじゃないのかな?
0191デフォルトの名無しさん
2016/11/12(土) 21:30:04.79ID:cIUa0gZx0192デフォルトの名無しさん
2016/11/12(土) 23:10:09.55ID:l9OhshgV流石の聖人マイクロソフトもお荷物を抱えきれなくなってきたんだろうね
0193デフォルトの名無しさん
2016/11/13(日) 02:11:36.78ID:PRCnkR8cBindingが理解出来ないのなら、全部コードビハインドで書けば良いのに。
0194デフォルトの名無しさん
2016/11/13(日) 02:55:57.86ID:+xp6lf8w苦労して覚えたものを擁護したくなる気持ちはわからんでもないけど、
10年経ってもほとんど普及してないのにはやっぱりそれなりに理由があると思う。
パフォーマンスの問題は目をつぶるとしても、個人的には可読的じゃないのが大きいと思うんだよね。
書いてるときはいいんだけど、自分が書いたものであっても後から見るとどこで何をやってるのか
ぱっと見て分からないし見当がつかない。
MVVM(正直これはあんまり理解してないんで誤解してるかもしれんが)にしてもそうだけど、
理念的に綺麗なのはわかるけど何か「これじゃない」感が強いというか、美しい理想の実現のための
コストが大きすぎるというか...
0195デフォルトの名無しさん
2016/11/13(日) 09:01:19.59ID:sNDrzqcx綺麗なコードをみてみたら素晴らしさが一発でわかるとおもぞ。直感的にすぐに
わかる。わからないようなのではだめだな。
だれか194のためにだせるかな?
0196デフォルトの名無しさん
2016/11/13(日) 09:45:56.53ID:lb7gRuG3同意。結局世の中に求められてるのは
大ヒットしたVB6レベルなんじゃないかねえ
SOAPがはやらなかったのも一緒。
0197デフォルトの名無しさん
2016/11/13(日) 10:23:03.20ID:67al7/78ポトペタも出来るし。
0198デフォルトの名無しさん
2016/11/13(日) 10:23:37.75ID:sNDrzqcx上がる。と考える人が殆どだから?
0199デフォルトの名無しさん
2016/11/13(日) 10:50:51.74ID:lO2MkZMm今時html触ったことない人なんだろうか?
0200デフォルトの名無しさん
2016/11/13(日) 11:12:37.23ID:ZjdX2IN8んーーーーんと考え込むよりもサクサクと作れるような案件ばかりだからだろ
0201デフォルトの名無しさん
2016/11/13(日) 11:39:53.10ID:IKKUDTFwそんな擁護とか色眼鏡で見ないでも、単純に学習コストが高いのが一番のネックだろう。
0202デフォルトの名無しさん
2016/11/13(日) 11:52:49.11ID:fBLfWj6L振るまいを独立にモデリングした上で、UIのどことモデルのどこを対応付けるか、を明確化するのがMVVMであり、バインディングの利点じゃん?
従来のフォーム・イベントゴリ押し的なやり方だとこれが曖昧化してしまうから、どこで何をやってるかがわからなくなる
MVVMでわけわからなくなる人はなにか根本的に間違ったことやってるんじゃないかな?
0203デフォルトの名無しさん
2016/11/13(日) 12:15:54.37ID:IKKUDTFw慣れてないだけだと思う
>>194
MVVMは高コストって主張も分かる。
単純な案件にはオーバースペックだし、Formsでも十分。
0204デフォルトの名無しさん
2016/11/13(日) 14:15:44.38ID:67al7/780205デフォルトの名無しさん
2016/11/13(日) 15:30:42.14ID:zWTpia8y0206デフォルトの名無しさん
2016/11/13(日) 19:32:23.00ID:wHFHc9ra0207デフォルトの名無しさん
2016/11/13(日) 19:51:43.67ID:6IaE8voh間違った変更は拒絶して例外を投げるのが基本のOOP
間違った変更を一時的に受け入れて(そのかわりエラーを状態の一部として持つ)コミット時に不変条件を満たせば良いMVVM
Formsなら例外をキャッチしてメッセージを出して入力を戻すだけでいいからOOP的に正しいモデルをそのまま再利用できる
要するにビューがドメインモデルについてよく知らなくてもビジネスルール的に正しい状態に保つことができる
MVVMだとビュー及びビューモデルがビジネスルール的に正しいか正しくないかということを知っていなければならない
それはビューやビューモデルではなくドメインモデルが管理すべき情報でしょ
0208デフォルトの名無しさん
2016/11/13(日) 22:40:30.15ID:67al7/78難しいから全部フラットで良いよ。
0209デフォルトの名無しさん
2016/11/14(月) 17:11:40.86ID:iSq4NCnavar dic2 = new Dictionary<string, string> { { "key", "value" } };
どちらでも動くようなのですが、カッコは付けるほうが良いですか?
0210デフォルトの名無しさん
2016/11/14(月) 19:10:02.84ID:xSfNgSMsお好きな方で。
今なら
{["key"] = "value"}
の方が解りやすいかも。
0211デフォルトの名無しさん
2016/11/14(月) 22:10:40.45ID:p26anznyA, Bは自由入力欄、CはA * Bを出力する読み取り専用(A, Bが変化したら即座に再計算される)
A, Bに数値と解釈できない文字列(decimalに変換できない文字列)が入力された場合、即座にERRVALという文字列に置き換える
Cが計算不能な場合、ERRVALという文字列に置き換える
このような画面をWPFで作成したいのですがViewModelとxamlはどのように書けばいいでしょうか?
0212デフォルトの名無しさん
2016/11/14(月) 22:57:37.38ID:2SylIT9P0213デフォルトの名無しさん
2016/11/14(月) 23:09:54.35ID:p26anzny他のプログラマがどう書くか参考にしたいです
0214デフォルトの名無しさん
2016/11/15(火) 00:54:17.56ID:gSjda41/htmlにはCSSがあるから見た目は外に出せる
0215デフォルトの名無しさん
2016/11/15(火) 07:18:35.80ID:wcWx6QZbならまず自分がどう書いたかを晒せよ
0216デフォルトの名無しさん
2016/11/15(火) 07:47:41.89ID:AaicVHah0217デフォルトの名無しさん
2016/11/15(火) 08:30:57.20ID:9/yxKzNnReactivePropertyのサンプルならググれば見つかるから参考にすりゃいいよ
0218デフォルトの名無しさん
2016/11/15(火) 10:37:08.44ID:9/yxKzNnxamlを腐しているやつは、xamlを全然知らないんだな
0219デフォルトの名無しさん
2016/11/15(火) 11:29:28.89ID:f/VYzzwV0220デフォルトの名無しさん
2016/11/15(火) 12:05:59.99ID:Sy8HLWAK残念なやつ
0221デフォルトの名無しさん
2016/11/15(火) 12:12:58.11ID:f/VYzzwV0222デフォルトの名無しさん
2016/11/15(火) 12:39:21.59ID:Sy8HLWAK顔真っ赤www
0223デフォルトの名無しさん
2016/11/15(火) 14:14:09.51ID:EsNZ5iro0224デフォルトの名無しさん
2016/11/15(火) 17:55:17.20ID:idS/rHgA必要なところで必要な形を使うのが良い
0225デフォルトの名無しさん
2016/11/15(火) 18:43:22.99ID:IxpYJQnbmizchiと取り巻きの声だけやたらデカいReactみたいなもんだ
0226デフォルトの名無しさん
2016/11/15(火) 22:31:04.10ID:YqUWOmsBstyle等は外に出せるぞ。
0227デフォルトの名無しさん
2016/11/16(水) 10:35:34.62ID:hL8zHUS90228デフォルトの名無しさん
2016/11/18(金) 23:01:26.36ID:+QqWh5chaがnullでないならaを用いてmyfuncの計算結果をbに入れたいのですが、
var b = (a == null) ? null: myfunc(a);
こんなふうにしたのですが、もっとスッキリ書けそうな気がするのですが、
思い付きません。
もっとスッキリ書けますか?
0229デフォルトの名無しさん
2016/11/18(金) 23:08:28.42ID:2P9KWEZx0230デフォルトの名無しさん
2016/11/19(土) 01:56:09.52ID:eBIxsLr/var b = a?.myfunc(a);
0231デフォルトの名無しさん
2016/11/19(土) 01:57:55.29ID:eBIxsLr/230は間違い。忘れてくだされ
0232デフォルトの名無しさん
2016/11/19(土) 03:57:45.25ID:gmVZjmNib = myfunc(a)で済むんだがなぁ
まあきっとそうではない何かをする関数なんだろうな
おれならaやbがnullである事に特別な意味があったり、myfuncを呼ばない事に特別な意味があるなら
ちゃんとif文書くけどな
0233デフォルトの名無しさん
2016/11/19(土) 10:29:56.40ID:0bgRfGhzstring myfunc(string a){
if(a==null)
return null;
を追加したらスッキリしました!
0234デフォルトの名無しさん
2016/11/19(土) 11:12:00.41ID:6I7N2mEo余計なことを言いたくなるなあ…
0235デフォルトの名無しさん
2016/11/19(土) 11:15:09.05ID:ZfUdGYAZどうしてもならジェネリックの拡張メソッドを作っとく手もあったね。
0236デフォルトの名無しさん
2016/11/19(土) 17:50:29.26ID:t3MBfDke0237デフォルトの名無しさん
2016/11/19(土) 17:52:57.62ID:E8arxXAw0238デフォルトの名無しさん
2016/11/19(土) 17:55:21.80ID:VKIYWaqIまたその話か
それはないよ。
0239デフォルトの名無しさん
2016/11/19(土) 23:03:49.26ID:0bgRfGhzなんで?
0240デフォルトの名無しさん
2016/11/20(日) 00:13:29.86ID:BknfpFpO暫定的にとはいえ不正な状態のオブジェクトを受け入れるってのが致命的にコードを汚くする
カプセル化で状態を保護するのが基本のオブジェクト指向に喧嘩売ってるとしか思えない
0241デフォルトの名無しさん
2016/11/20(日) 00:26:32.91ID:K2ib4r+Uその関数使う使う時に一々nullチェックするの面倒。
それを忘れない保証もどこにもないし。
0242デフォルトの名無しさん
2016/11/20(日) 00:30:59.63ID:ckE9xegj何という頭の悪さ。
nullを禁止したらnullを返すことで表現していたことを
もっと面倒な別の方法で呼び出し側に伝達する必要が生じるんだけど。
何でこんな簡単なことが分からないのかね。
0243デフォルトの名無しさん
2016/11/20(日) 01:00:26.85ID:KPo4Qlq+返されたとしてもどのみちチェックする必要が出てくる
0244デフォルトの名無しさん
2016/11/20(日) 01:09:39.51ID:X8MMRSH30245デフォルトの名無しさん
2016/11/20(日) 01:27:12.98ID:K2ib4r+U勉強不足
0246デフォルトの名無しさん
2016/11/20(日) 01:38:16.74ID:K2ib4r+UC#7.0か8.0に期待。
0247デフォルトの名無しさん
2016/11/20(日) 02:13:42.33ID:ckE9xegj馬鹿じゃなきゃちょっと考えればわかるはずだが、
必ず既定値で初期化されるようにするにしろ初期化なしの変数宣言ができないようにするにしろ、
nullを許容することの弊害とは別のより大きい弊害や利便性の低下を生むだけ。
だいたい、nullを許容することの弊害なんて大半はそれを主張してる奴が勘違いしてるだけだ
0248デフォルトの名無しさん
2016/11/20(日) 02:22:59.08ID:9PtzIqGH0249デフォルトの名無しさん
2016/11/20(日) 02:25:15.52ID:ckE9xegj馬鹿かそうでないか、それだけの問題
0250デフォルトの名無しさん
2016/11/20(日) 05:58:45.20ID:2ye3zmI2nullを返す関数や変数にnullを代入する処理をよく使うのですが、
それで混乱した経験も無いのですが、なぜ、
nullを返す関数
変数にnullを代入
に反対する人がいるのでしょうか?
0251デフォルトの名無しさん
2016/11/20(日) 07:22:58.86ID:pCJ1qvOZ>>241と同じ
0252デフォルトの名無しさん
2016/11/20(日) 08:05:54.92ID:2ye3zmI2>その関数使う使う時に一々nullチェックするの面倒。
>それを忘れない保証もどこにもないし。
この意味が分からないのですが、関数を使うときにnullチェックする
と言うのは何ですか?
関数がnullを返す場合もあるように自分でそうしているわけだから
何も問題ないと思いますが。
■ このスレッドは過去ログ倉庫に格納されています