トップページ⇒tech
1002コメント344KB

C#, C♯, C#相談室 Part91 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/06/29(水) 23:45:15.36ID:EZjVZgG6
■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら
http://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:aHkFnxeg
結局普及しないのは、関係者がちゃんと理解できていないのではないかな。
WEBを見たら、いろいろと説明が書いてるがどれも分りにくい。

C#でもVBでも1日も触っていたら、そこそこ使えるようになる。うろ覚えでも
プログラムはできる。
 WPFは説明が中途半端なので肝の部分がはっきりしない。

バインディングするんならイベントもちゃんとバインディングしないとだめだわ。
バインディングを間違っていても反応なしだしな。W エラーすらチェックできてない。
中途半端。
0154デフォルトの名無しさん2016/11/10(木) 17:47:19.45ID:riiUw9jl
>>152 命名のXAML君は、staticおじさんと同じ加齢臭がする
0155デフォルトの名無しさん2016/11/10(木) 17:49:55.89ID:ApowNrKS
ラムダとLINQも新しいことを拒絶するstaticおじさんだろうな
0156デフォルトの名無しさん2016/11/10(木) 19:15:21.25ID:pqjjw4yY
ラムダとLINQの時は使うなとか言っているやつがいたからな
拒絶するのは勝手だがいちいち布教しようとするのはウザイ
0157デフォルトの名無しさん2016/11/10(木) 19:22:39.57ID:CGPJd07S
IEでニコ生みたいなストリーミング動画を見る際に、動画データがメモリーに展開する前にデータをリアルタイムでキャプチャするにはどうしたらいいでしょうか?
0158デフォルトの名無しさん2016/11/10(木) 19:23:04.26ID:ApowNrKS
C#のLINQは名前が他の言語と違うから一瞬迷う
01591572016/11/10(木) 19:31:03.19ID:CGPJd07S
すみません分かりづらかったです。
IEで動画見ながら、IEがダウンロードしてるデータがストリーミング動画かどうかを判断して、動画ならIEの画面に表示される前に手を加えたいんです。
0160デフォルトの名無しさん2016/11/10(木) 19:36:34.41ID:hirKpSKv
ストリーミング中の動画に手を加えられるだけの技能があるのがすごい
0161デフォルトの名無しさん2016/11/10(木) 20:17:59.57ID:13nZCkn2
使う価値があると思えば使えばいい
自分が使うのは無理だ参りましたと思ったら使わなければいい
ただどちらを選択したかは別に他人に伝えなくていい
0162デフォルトの名無しさん2016/11/10(木) 22:17:57.52ID:c1KzPo7d
>>159
現実的な内容じゃない
基本的に無理
プロキシ―作っても動画をいじれる技量が君にあるとは思えない
0163デフォルトの名無しさん2016/11/10(木) 23:07:13.32ID:pEVMYV3p
IEに、そういうプラグインがあるのか、探してみれば?

IEは、オープンソース(OSS)じゃないから、改造するのは難しい。
OSSは、Firefox, Chromium, Safari

Atom, Visual Studio Code, Electron は、Chromiumを使っている
0164デフォルトの名無しさん2016/11/11(金) 03:04:38.37ID:+gNs9Nbk
>>153
君はWPFどころかC#もよく理解できてないみたいだから、C#入門書からスタートするのがおすすめ
0165デフォルトの名無しさん2016/11/11(金) 04:07:56.66ID:KgVthd+h
>157
ストリーミングをやるコンポーネントはあるだろ。そのデータ取り込み部分を
バッファリングして中を加工すればいいだけだろ。W
画像認識をするのかな?
0166デフォルトの名無しさん2016/11/11(金) 07:05:40.26ID:KgVthd+h
MVVMのICommandの使い方
ICommandを実装する理由はなんだ?
 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:zUQAdwQM
イベントを再定義したかった人生だった(Command辞世の句)
0168デフォルトの名無しさん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
肝:DelegateCommandをプロパティとして公開
  コンストラクタの中でインスタンス化

() => Result = "登録OK"
これはなんやねん? このアクションの書き方がわからんなーという人。
ラムダ式、、、初めて聞いた?
0170デフォルトの名無しさん2016/11/11(金) 07:13:06.18ID:KgVthd+h
>君はWPFどころかC#もよく理解できてないみたいだから、C#入門書からスタートするのがおすすめ

C#の方が難しいわ。まあでも何とか動かせる。WPFもBindingだけわかったので何とか
使えるレベルにはなったな。

問題はMVVMパターンだな。
MVVMじゃなくてM-VM-VかV-VM-Mでないとだめだよな。VVMMの方がいいと思う。
0171デフォルトの名無しさん2016/11/11(金) 07:23:51.87ID:KgVthd+h
WPF攻略方法
1.Bindingの理解
2.「優れた例」でVVMM(またはMVVM)を理解する こっちはまあボチボチでもOK

MSの文書は酷いがIT−PROの文書は体裁としてはよくまとまってはいるが説明が難しい。
 第一に例が悪い。
 第二に例にセンスがない。
 第三に例の説明が下手。
単純化したシンプルな例で示さないと「俺はこんなにすごいんだぞ」みたいな
複雑な例では分からん。
0172デフォルトの名無しさん2016/11/11(金) 08:31:34.35ID:KgVthd+h
MVVMのVMってわざわざ苦労してクラスをつくる必要あるんか?
コードビハインドをVMにしたらいいんではないか? VとのIFはここで全部やった
らいいと思うがな。
なんか必要性がいまいちわからんなー。
0173デフォルトの名無しさん2016/11/11(金) 08:51:31.09ID:qDFZLZyC
>>172
必要性が何なのかちゃんと調べたのかい?
0174デフォルトの名無しさん2016/11/11(金) 09:40:30.93ID:yIFyhkZ0
DIコンテナを導入すると、VMとMの2層構造のありがたみが実感できるんだけどな
0175デフォルトの名無しさん2016/11/11(金) 09:43:11.94ID:M2uBl8fv
>>169
ラムダ式は、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:qDFZLZyC
>>176
Xamlに似てる?勘違いしてんぞお前
0180デフォルトの名無しさん2016/11/11(金) 18:57:11.76ID:0OJ17qIg
>>177
List<T>.ComvertAll<TOutput>(Converter<T,TOutput>)ではダメなんか?
0181デフォルトの名無しさん2016/11/11(金) 19:20:11.62ID:KgVthd+h
>179
Xamlそのものだわ。C++もC#のFormもXmalinUIもあって、3種類の開発環境がある。
まともに動けば凄いよ。W
でもサンプルを動かしたまではすんなりいったんだが署名ができないとか、文字ばけ
するとかどうも先が思いやられるのでxamalin
やめてAndroid Studioにしようかと迷ってる。こっちはJavaだけど、、
0182デフォルトの名無しさん2016/11/11(金) 19:58:04.56ID:JZCe9Y2P
ラムダ厨うぜー
0183デフォルトの名無しさん2016/11/11(金) 20:14:46.10ID:tUVkv4AT
おはようラムダ君
0184デフォルトの名無しさん2016/11/11(金) 20:20:02.48ID:TqB+9XQ4
ランバダなら知ってる
0185デフォルトの名無しさん2016/11/11(金) 20:27:50.64ID:nfVHRfzR
>>181
c#初心者スレがあるからそっちにいった方がいい
いい加減うっとおしい
0186デフォルトの名無しさん2016/11/11(金) 20:46:50.11ID:KgVthd+h
アッ、もうC#は卒業したんでこないよ。次はJAVAだ
0187デフォルトの名無しさん2016/11/11(金) 20:49:06.76ID:nfVHRfzR
それは良かった
0188デフォルトの名無しさん2016/11/11(金) 21:09:36.24ID:TOO7Y3Ld
ε-(´∀`*)ホッ
0189デフォルトの名無しさん2016/11/11(金) 22:25:05.87ID:+gNs9Nbk
>>181
XamarinはC#に相当慣れ親しんでるか、androidもiOSもそこそこやってる人がまとめて開発したいって場面以外ではまだおすすめできる状態じゃないかな
まだ情報も少ないし、ラムダ式とかイベントとかの基本を自力で調べられない人には特に厳しいと思う
0190デフォルトの名無しさん2016/11/12(土) 20:58:13.68ID:RWma0It4
古いWindowsマシンでAndoroid開発しようとすると
まずエミュレータが動かない

WindowsPhoneが頑張ってくれてたら
引き続きVisualStudioで開発できたのに
どうしてここまで差を付けられたのか

MSってエリート揃いじゃないのかな?
0191デフォルトの名無しさん2016/11/12(土) 21:30:04.79ID:cIUa0gZx
古いマシンで開発するやつの事なんかMSが面倒見る義理ねえよ
0192デフォルトの名無しさん2016/11/12(土) 23:10:09.55ID:l9OhshgV
Win10で露骨にレガシーおじさん切り捨てに来たし
流石の聖人マイクロソフトもお荷物を抱えきれなくなってきたんだろうね
0193デフォルトの名無しさん2016/11/13(日) 02:11:36.78ID:PRCnkR8c
xamlが嫌いなら、全部コードで書けば良いのに。
Bindingが理解出来ないのなら、全部コードビハインドで書けば良いのに。
0194デフォルトの名無しさん2016/11/13(日) 02:55:57.86ID:+xp6lf8w
WPFって学習コストが高い(少なくとも俺にとっては)から
苦労して覚えたものを擁護したくなる気持ちはわからんでもないけど、
10年経ってもほとんど普及してないのにはやっぱりそれなりに理由があると思う。

パフォーマンスの問題は目をつぶるとしても、個人的には可読的じゃないのが大きいと思うんだよね。
書いてるときはいいんだけど、自分が書いたものであっても後から見るとどこで何をやってるのか
ぱっと見て分からないし見当がつかない。

MVVM(正直これはあんまり理解してないんで誤解してるかもしれんが)にしてもそうだけど、
理念的に綺麗なのはわかるけど何か「これじゃない」感が強いというか、美しい理想の実現のための
コストが大きすぎるというか...
0195デフォルトの名無しさん2016/11/13(日) 09:01:19.59ID:sNDrzqcx
>194
綺麗なコードをみてみたら素晴らしさが一発でわかるとおもぞ。直感的にすぐに
わかる。わからないようなのではだめだな。

だれか194のためにだせるかな?
0196デフォルトの名無しさん2016/11/13(日) 09:45:56.53ID:lb7gRuG3
>>194
同意。結局世の中に求められてるのは
大ヒットしたVB6レベルなんじゃないかねえ
SOAPがはやらなかったのも一緒。
0197デフォルトの名無しさん2016/11/13(日) 10:23:03.20ID:67al7/78
VB6っぽくも書けるんだけどね。
ポトペタも出来るし。
0198デフォルトの名無しさん2016/11/13(日) 10:23:37.75ID:sNDrzqcx
んーーーーんと考え込むよりもサクサクと作ったほうが手数は多くても生産性が
上がる。と考える人が殆どだから?
0199デフォルトの名無しさん2016/11/13(日) 10:50:51.74ID:lO2MkZMm
html知っていればxamlの可読性にケチを付けること無いと思うんだが
今時html触ったことない人なんだろうか?
0200デフォルトの名無しさん2016/11/13(日) 11:12:37.23ID:ZjdX2IN8
>>198
んーーーーんと考え込むよりもサクサクと作れるような案件ばかりだからだろ
0201デフォルトの名無しさん2016/11/13(日) 11:39:53.10ID:IKKUDTFw
>>194
そんな擁護とか色眼鏡で見ないでも、単純に学習コストが高いのが一番のネックだろう。
0202デフォルトの名無しさん2016/11/13(日) 11:52:49.11ID:fBLfWj6L
どこで何をやってるかわからない、ってのが不思議だな
振るまいを独立にモデリングした上で、UIのどことモデルのどこを対応付けるか、を明確化するのがMVVMであり、バインディングの利点じゃん?
従来のフォーム・イベントゴリ押し的なやり方だとこれが曖昧化してしまうから、どこで何をやってるかがわからなくなる
MVVMでわけわからなくなる人はなにか根本的に間違ったことやってるんじゃないかな?
0203デフォルトの名無しさん2016/11/13(日) 12:15:54.37ID:IKKUDTFw
>>202
慣れてないだけだと思う

>>194
MVVMは高コストって主張も分かる。
単純な案件にはオーバースペックだし、Formsでも十分。
0204デフォルトの名無しさん2016/11/13(日) 14:15:44.38ID:67al7/78
こうして人は老いて逝くのかな。
0205デフォルトの名無しさん2016/11/13(日) 15:30:42.14ID:zWTpia8y
「フロントエンド界隈」が、声だけでかくて市場としては滅茶苦茶小さいのにに似てる
0206デフォルトの名無しさん2016/11/13(日) 19:32:23.00ID:wHFHc9ra
フロントエンドプロセッサ
0207デフォルトの名無しさん2016/11/13(日) 19:51:43.67ID:6IaE8voh
MVVMはOOPと相性悪いよな
間違った変更は拒絶して例外を投げるのが基本のOOP
間違った変更を一時的に受け入れて(そのかわりエラーを状態の一部として持つ)コミット時に不変条件を満たせば良いMVVM
Formsなら例外をキャッチしてメッセージを出して入力を戻すだけでいいからOOP的に正しいモデルをそのまま再利用できる
要するにビューがドメインモデルについてよく知らなくてもビジネスルール的に正しい状態に保つことができる
MVVMだとビュー及びビューモデルがビジネスルール的に正しいか正しくないかということを知っていなければならない
それはビューやビューモデルではなくドメインモデルが管理すべき情報でしょ
0208デフォルトの名無しさん2016/11/13(日) 22:40:30.15ID:67al7/78
レイヤーが違うと思うけど。

難しいから全部フラットで良いよ。
0209デフォルトの名無しさん2016/11/14(月) 17:11:40.86ID:iSq4NCna
var dic1 = new Dictionary<string, string>() { { "key", "value" } };
var dic2 = new Dictionary<string, string> { { "key", "value" } };
どちらでも動くようなのですが、カッコは付けるほうが良いですか?
0210デフォルトの名無しさん2016/11/14(月) 19:10:02.84ID:xSfNgSMs
>>209
お好きな方で。

今なら
{["key"] = "value"}
の方が解りやすいかも。
0211デフォルトの名無しさん2016/11/14(月) 22:10:40.45ID:p26anzny
テキストボックスの入力欄A, B, Cがある
A, Bは自由入力欄、CはA * Bを出力する読み取り専用(A, Bが変化したら即座に再計算される)
A, Bに数値と解釈できない文字列(decimalに変換できない文字列)が入力された場合、即座にERRVALという文字列に置き換える
Cが計算不能な場合、ERRVALという文字列に置き換える
このような画面をWPFで作成したいのですがViewModelとxamlはどのように書けばいいでしょうか?
0212デフォルトの名無しさん2016/11/14(月) 22:57:37.38ID:2SylIT9P
それだけ決まっててむしろどこに悩んでるのさ
0213デフォルトの名無しさん2016/11/14(月) 23:09:54.35ID:p26anzny
>>212
他のプログラマがどう書くか参考にしたいです
0214デフォルトの名無しさん2016/11/15(火) 00:54:17.56ID:gSjda41/
>>199
htmlにはCSSがあるから見た目は外に出せる
0215デフォルトの名無しさん2016/11/15(火) 07:18:35.80ID:wcWx6QZb
>>213
ならまず自分がどう書いたかを晒せよ
0216デフォルトの名無しさん2016/11/15(火) 07:47:41.89ID:AaicVHah
キー入力ミスったら最初から入力しなおしな典型的な糞ソフト仕様だな
0217デフォルトの名無しさん2016/11/15(火) 08:30:57.20ID:9/yxKzNn
>>213
ReactivePropertyのサンプルならググれば見つかるから参考にすりゃいいよ
0218デフォルトの名無しさん2016/11/15(火) 10:37:08.44ID:9/yxKzNn
>>214
xamlを腐しているやつは、xamlを全然知らないんだな
0219デフォルトの名無しさん2016/11/15(火) 11:29:28.89ID:f/VYzzwV
XAMLをよく知っているやつがちゃんとした説明してるの見たことない
0220デフォルトの名無しさん2016/11/15(火) 12:05:59.99ID:Sy8HLWAK
>>219
残念なやつ
0221デフォルトの名無しさん2016/11/15(火) 12:12:58.11ID:f/VYzzwV
というように人格否定しかできない
0222デフォルトの名無しさん2016/11/15(火) 12:39:21.59ID:Sy8HLWAK
>>221
顔真っ赤www
0223デフォルトの名無しさん2016/11/15(火) 14:14:09.51ID:EsNZ5iro
と、知ったかは発狂するのであった
0224デフォルトの名無しさん2016/11/15(火) 17:55:17.20ID:idS/rHgA
CSSはxml形式じゃないから良い
必要なところで必要な形を使うのが良い
0225デフォルトの名無しさん2016/11/15(火) 18:43:22.99ID:IxpYJQnb
全然使われてないのは書店(Amazonでもいいけど)に行くとあからさまにラインナップがしょぼいからすぐ分かる
mizchiと取り巻きの声だけやたらデカいReactみたいなもんだ
0226デフォルトの名無しさん2016/11/15(火) 22:31:04.10ID:YqUWOmsB
>>214
style等は外に出せるぞ。
0227デフォルトの名無しさん2016/11/16(水) 10:35:34.62ID:hL8zHUS9
中はやめてー
0228デフォルトの名無しさん2016/11/18(金) 23:01:26.36ID:+QqWh5ch
変数aがnullならbもnullにして、
aがnullでないならaを用いてmyfuncの計算結果をbに入れたいのですが、

var b = (a == null) ? null: myfunc(a);

こんなふうにしたのですが、もっとスッキリ書けそうな気がするのですが、
思い付きません。
もっとスッキリ書けますか?
0229デフォルトの名無しさん2016/11/18(金) 23:08:28.42ID:2P9KWEZx
myfuncの戻り値を考え直せとしかwwwwwwwwwwww
0230デフォルトの名無しさん2016/11/19(土) 01:56:09.52ID:eBIxsLr/
>>228
var b = a?.myfunc(a);
0231デフォルトの名無しさん2016/11/19(土) 01:57:55.29ID:eBIxsLr/
とおもったらmyfuncはaのメソッドじゃないのね
230は間違い。忘れてくだされ
0232デフォルトの名無しさん2016/11/19(土) 03:57:45.25ID:gmVZjmNi
myfunc(null)がnullを返すようにすれば
b = myfunc(a)で済むんだがなぁ
まあきっとそうではない何かをする関数なんだろうな

おれならaやbがnullである事に特別な意味があったり、myfuncを呼ばない事に特別な意味があるなら
ちゃんとif文書くけどな
0233デフォルトの名無しさん2016/11/19(土) 10:29:56.40ID:0bgRfGhz
>>229
string myfunc(string a){
 if(a==null)
  return null;

を追加したらスッキリしました!
0234デフォルトの名無しさん2016/11/19(土) 11:12:00.41ID:6I7N2mEo
aってstringだったのか…
余計なことを言いたくなるなあ…
0235デフォルトの名無しさん2016/11/19(土) 11:15:09.05ID:ZfUdGYAZ
スッキリワロタ

どうしてもならジェネリックの拡張メソッドを作っとく手もあったね。
0236デフォルトの名無しさん2016/11/19(土) 17:50:29.26ID:t3MBfDke
nullを返す関数を作ると後々災いの元
0237デフォルトの名無しさん2016/11/19(土) 17:52:57.62ID:E8arxXAw
かと言ってstringで""を返す関数を作っても後々災いの元
0238デフォルトの名無しさん2016/11/19(土) 17:55:21.80ID:VKIYWaqI
>>236
またその話か
それはないよ。
0239デフォルトの名無しさん2016/11/19(土) 23:03:49.26ID:0bgRfGhz
>>236
なんで?
0240デフォルトの名無しさん2016/11/20(日) 00:13:29.86ID:BknfpFpO
暫く使ってみたがWPFというかMVVMはやっぱり良くないな
暫定的にとはいえ不正な状態のオブジェクトを受け入れるってのが致命的にコードを汚くする
カプセル化で状態を保護するのが基本のオブジェクト指向に喧嘩売ってるとしか思えない
0241デフォルトの名無しさん2016/11/20(日) 00:26:32.91ID:K2ib4r+U
>>239
その関数使う使う時に一々nullチェックするの面倒。
それを忘れない保証もどこにもないし。
0242デフォルトの名無しさん2016/11/20(日) 00:30:59.63ID:ckE9xegj
>>241
何という頭の悪さ。

nullを禁止したらnullを返すことで表現していたことを
もっと面倒な別の方法で呼び出し側に伝達する必要が生じるんだけど。

何でこんな簡単なことが分からないのかね。
0243デフォルトの名無しさん2016/11/20(日) 01:00:26.85ID:KPo4Qlq+
FindFirstみたいなメソッドでマッチしない場合にnullじゃないオブジェクトを
返されたとしてもどのみちチェックする必要が出てくる
0244デフォルトの名無しさん2016/11/20(日) 01:09:39.51ID:X8MMRSH3
null返す関数禁止じゃなくてnull代入禁止型にしてくれ
0245デフォルトの名無しさん2016/11/20(日) 01:27:12.98ID:K2ib4r+U
>>242
勉強不足
0246デフォルトの名無しさん2016/11/20(日) 01:38:16.74ID:K2ib4r+U
>>244
C#7.0か8.0に期待。
0247デフォルトの名無しさん2016/11/20(日) 02:13:42.33ID:ckE9xegj
期待するだけ無駄。

馬鹿じゃなきゃちょっと考えればわかるはずだが、
必ず既定値で初期化されるようにするにしろ初期化なしの変数宣言ができないようにするにしろ、
nullを許容することの弊害とは別のより大きい弊害や利便性の低下を生むだけ。

だいたい、nullを許容することの弊害なんて大半はそれを主張してる奴が勘違いしてるだけだ
0248デフォルトの名無しさん2016/11/20(日) 02:22:59.08ID:9PtzIqGH
老害臭が半端無いんだが。
0249デフォルトの名無しさん2016/11/20(日) 02:25:15.52ID:ckE9xegj
年齢の問題じゃないね。
馬鹿かそうでないか、それだけの問題
0250デフォルトの名無しさん2016/11/20(日) 05:58:45.20ID:2ye3zmI2
>>244
nullを返す関数や変数にnullを代入する処理をよく使うのですが、
それで混乱した経験も無いのですが、なぜ、
 nullを返す関数
 変数にnullを代入
に反対する人がいるのでしょうか?
0251デフォルトの名無しさん2016/11/20(日) 07:22:58.86ID:pCJ1qvOZ
>>250
>>241と同じ
0252デフォルトの名無しさん2016/11/20(日) 08:05:54.92ID:2ye3zmI2
>>251
>その関数使う使う時に一々nullチェックするの面倒。
>それを忘れない保証もどこにもないし。
この意味が分からないのですが、関数を使うときにnullチェックする
と言うのは何ですか?
関数がnullを返す場合もあるように自分でそうしているわけだから
何も問題ないと思いますが。
■ このスレッドは過去ログ倉庫に格納されています