■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part92 (実質93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/
■次スレは>>970が建てる事
建てられない場合は他を指定する事。
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/04/22(土) 15:36:53.26ID:S+KK7a41
121デフォルトの名無しさん
2017/05/24(水) 02:20:31.18ID:IRME+Rk/ TypeScriptとかSwiftとかKotlinの先例があるのにnull非許容の意味が理解できない>>112 みたいのが社会の進歩を妨げてるんだよなぁ
nullの代わりに空文字を入れることになるみたいな意味不明なことを言ってるやつもいたし、英語の議論が読めないにしても他の言語の例ぐらいは確認してからしゃべってほしい
nullの代わりに空文字を入れることになるみたいな意味不明なことを言ってるやつもいたし、英語の議論が読めないにしても他の言語の例ぐらいは確認してからしゃべってほしい
122デフォルトの名無しさん
2017/05/24(水) 02:27:23.98ID:k5coCCFX またしょうもないのが現れたな
意味も意図も理解できるが、意図した通りの機能は発揮しないと言ってるんだけど
だからその「先例」とやらで現に意図した通り間違って自分の足を撃たない機能を発揮してるのかと。
してやしねえよw
意味も意図も理解できるが、意図した通りの機能は発揮しないと言ってるんだけど
だからその「先例」とやらで現に意図した通り間違って自分の足を撃たない機能を発揮してるのかと。
してやしねえよw
123デフォルトの名無しさん
2017/05/24(水) 02:32:41.30ID:k5coCCFX 要するに、nullを許容することに起因する問題が存在するので
nullを許容しなければそれは解決するのだ、なんていうのはただの愚か者の錯覚であって、
そんなものは問題Aをより発見が困難な問題Bに置き換えることにしかならない
nullを許容しなければそれは解決するのだ、なんていうのはただの愚か者の錯覚であって、
そんなものは問題Aをより発見が困難な問題Bに置き換えることにしかならない
124デフォルトの名無しさん
2017/05/24(水) 03:32:06.26ID:5B8IqCyj nullが生まれた背景と現在のnullの問題点 ― null参照問題(前編)
http://www.buildinsider.net/column/iwanaga-nobuyuki/011
C#でのnull参照問題への取り組み ― null参照問題(後編)
http://www.buildinsider.net/column/iwanaga-nobuyuki/012
読もうな
http://www.buildinsider.net/column/iwanaga-nobuyuki/011
C#でのnull参照問題への取り組み ― null参照問題(後編)
http://www.buildinsider.net/column/iwanaga-nobuyuki/012
読もうな
125デフォルトの名無しさん
2017/05/24(水) 04:54:25.97ID:f/qUGphe nullpoを許容
126デフォルトの名無しさん
2017/05/24(水) 05:52:55.01ID:SWY45HoB ポインタじゃなくていいところでは(nullを許容しない)参照をつかう
C++では当たり前にやっていた事でその威力は皆が知っていた
C++から派生したC#やJavaがこれを捨て去った意味が逆にわからない
C#はあるべき姿に戻ろうとしているだけ
C++では当たり前にやっていた事でその威力は皆が知っていた
C++から派生したC#やJavaがこれを捨て去った意味が逆にわからない
C#はあるべき姿に戻ろうとしているだけ
127デフォルトの名無しさん
2017/05/24(水) 07:19:29.94ID:OFlbMgow >>122-123
レス古事記乙
レス古事記乙
128デフォルトの名無しさん
2017/05/24(水) 08:19:55.11ID:gnZYpDQN Int f(int x) ならxで例えば小数の事を考えなくて済む。
同じく f(hogeClass y) でyがnullの可能性を
考えなくて済むならそのほうが良いだろう。
そう思わないならプログラマーは
早々にやめたほうが良いと思うの。
nullチェック忘れてヌルポだすコードを
量産するバカが減るのは助かる。
同じく f(hogeClass y) でyがnullの可能性を
考えなくて済むならそのほうが良いだろう。
そう思わないならプログラマーは
早々にやめたほうが良いと思うの。
nullチェック忘れてヌルポだすコードを
量産するバカが減るのは助かる。
129デフォルトの名無しさん
2017/05/24(水) 08:56:56.79ID:2RBb7Y8v なんで馬鹿は馬鹿を説得しようとするんだろう?
馬鹿は馬鹿なんだから自分が馬鹿だなんて認める分けねえだろ
だからお前も馬鹿だと言うんだ
馬鹿は死ね
馬鹿は馬鹿なんだから自分が馬鹿だなんて認める分けねえだろ
だからお前も馬鹿だと言うんだ
馬鹿は死ね
130デフォルトの名無しさん
2017/05/24(水) 09:20:10.02ID:CWb9U0nP131デフォルトの名無しさん
2017/05/24(水) 09:38:54.50ID:dFpq1SmP ついでにundefinedも導入してほしい
132デフォルトの名無しさん
2017/05/24(水) 10:29:24.60ID:4XHCBZ7H ぬるぽ
133デフォルトの名無しさん
2017/05/24(水) 10:36:49.92ID:0w0qPph2 どうしてnull非許容型を導入するって話をnullの根絶なんて話に持っていこうとするんだろうね?
134デフォルトの名無しさん
2017/05/24(水) 10:46:19.73ID:xvW9RZ2K >>128
間違ってるよその発想
その発想って>>1254の記事にもあるけど、メソッドが引数にnullを受け入れる
確信もないのに意図してnullを渡すプログラマなんかいません。
nullを受け入れないメソッドにnullを渡してしまう事態が起こるのは、
バグによってプログラマの意図に反してそうなるからだよ。当たり前でしょ。
だからnull非許容型を導入したところで、「プログラマの意図の反して変数の能がnullであるバグ」が
「プログラマの意図に反して変数の値が不適切であるバグ」に置き換わるだけ。
そして後者は前者より発見が困難な分、悪性度はより高い。
こんな簡単なことが分からん奴ってアホだろほんっと。
間違ってるよその発想
その発想って>>1254の記事にもあるけど、メソッドが引数にnullを受け入れる
確信もないのに意図してnullを渡すプログラマなんかいません。
nullを受け入れないメソッドにnullを渡してしまう事態が起こるのは、
バグによってプログラマの意図に反してそうなるからだよ。当たり前でしょ。
だからnull非許容型を導入したところで、「プログラマの意図の反して変数の能がnullであるバグ」が
「プログラマの意図に反して変数の値が不適切であるバグ」に置き換わるだけ。
そして後者は前者より発見が困難な分、悪性度はより高い。
こんな簡単なことが分からん奴ってアホだろほんっと。
135デフォルトの名無しさん
2017/05/24(水) 11:09:16.07ID:PQqcAP89136デフォルトの名無しさん
2017/05/24(水) 11:32:23.53ID:fJwJIEtw 変数がnullである は 変数が不適切である に含まれる
変数が不適切なケースのうち変数がnullであるケースを言語仕様として排除できるって話じゃないの?
確かにこのnullのケースを排除しても他に不適切なケースがある設計なら完璧な対策ではないだろうけど有用なケースも認められるなら検討の価値はあるんじゃないかな?
変数が不適切なケースのうち変数がnullであるケースを言語仕様として排除できるって話じゃないの?
確かにこのnullのケースを排除しても他に不適切なケースがある設計なら完璧な対策ではないだろうけど有用なケースも認められるなら検討の価値はあるんじゃないかな?
137デフォルトの名無しさん
2017/05/24(水) 11:40:03.52ID:lmoDZ3Fc138デフォルトの名無しさん
2017/05/24(水) 12:07:37.15ID:xvW9RZ2K >>137
何を言ってるのか意味が分からんね
何を言ってるのか意味が分からんね
139デフォルトの名無しさん
2017/05/24(水) 12:11:17.02ID:QZczTL/V >>138
お前がな
お前がな
140デフォルトの名無しさん
2017/05/24(水) 12:23:14.46ID:Em+sDdPu 全部Object型でやってろってのと変わらんがな
141デフォルトの名無しさん
2017/05/24(水) 15:17:32.97ID:IRME+Rk/ >>134
ただの理解不足。具体的にTypeScriptとかのコードでその状況を示して見てよ。
多分、nullが入れられなくなるので初期値に別に値(stringならstring.Empty的なもの)を入れるもんだと思ってるんだろう。
それは間違った考え
・nullの考慮忘れ
・過剰なnullチェック
というのを防ぐのが目的
<従来>
void Hoge(string arg){ 〜 }
//listが要素を持っていなければfirstはnull
string first = list.FirstOrDefault();
//何らかの処理
//nullの考慮忘れ。実行時例外
Hoge(first);
<null非許容型>
//Hogeの引数はnull非許容
void Hoge(string! arg){ 〜 }
//ここは「何らかの処理」の都合でnull許容とする
string first = list.FirstOrDefault();
//何らかの処理
//nullの考慮忘れ。コンパイルエラー
Hoge(first);
ただの理解不足。具体的にTypeScriptとかのコードでその状況を示して見てよ。
多分、nullが入れられなくなるので初期値に別に値(stringならstring.Empty的なもの)を入れるもんだと思ってるんだろう。
それは間違った考え
・nullの考慮忘れ
・過剰なnullチェック
というのを防ぐのが目的
<従来>
void Hoge(string arg){ 〜 }
//listが要素を持っていなければfirstはnull
string first = list.FirstOrDefault();
//何らかの処理
//nullの考慮忘れ。実行時例外
Hoge(first);
<null非許容型>
//Hogeの引数はnull非許容
void Hoge(string! arg){ 〜 }
//ここは「何らかの処理」の都合でnull許容とする
string first = list.FirstOrDefault();
//何らかの処理
//nullの考慮忘れ。コンパイルエラー
Hoge(first);
142デフォルトの名無しさん
2017/05/24(水) 15:28:42.02ID:9Gf4SnqN 実行時例外でるならそれでいいじゃんw
143デフォルトの名無しさん
2017/05/24(水) 15:34:09.87ID:xvW9RZ2K >>141
具体的で素晴らしい
確かにその例で示されているような「nullの考慮忘れ」を防ぐ一定の効果は
期待できることは認める。
でもそれ、よく考えると机上の空論でしょ。
普通のプログラマならある変数やコレクションが仕様上nullを持ちうるかどうかは
常に気にしながらコーディングするので、そこに例示されている「nullの考慮忘れ」は
実際にはそんなにありがちな問題ではないと思う。
ありがちなのは、その例でいえばリストに値を入れる段階で
プログラマの意図に反してnullが混入する問題だよね。
具体的で素晴らしい
確かにその例で示されているような「nullの考慮忘れ」を防ぐ一定の効果は
期待できることは認める。
でもそれ、よく考えると机上の空論でしょ。
普通のプログラマならある変数やコレクションが仕様上nullを持ちうるかどうかは
常に気にしながらコーディングするので、そこに例示されている「nullの考慮忘れ」は
実際にはそんなにありがちな問題ではないと思う。
ありがちなのは、その例でいえばリストに値を入れる段階で
プログラマの意図に反してnullが混入する問題だよね。
144デフォルトの名無しさん
2017/05/24(水) 15:55:01.74ID:fJwJIEtw 実行されるまで気づかないならインタプリタと一緒じゃん
145デフォルトの名無しさん
2017/05/24(水) 16:07:24.68ID:IRME+Rk/ >>143
>ありがちな問題ではない
ありがちかどうかではなく、その機能を導入するメリットとデメリットの釣り合い。
エラーが未然に防げたり、記述が簡潔で見やすくなるならメリット。
文法が複雑になったり、別のバグの原因になったり、動作が遅くなったり、実装に手間がかかるならデメリット。
現状は「新バージョンではnull許容はstring?にしろよ」から「文法は変更せずフロー解析でどうにかしようぜ」までいろんなアイデアがある
個人的には、標準ライブラリの頭nullチェックをしてArgumentNullExceptionを出すようにしているところがいらなくなってライブラリ作者にはメリットがデカそうかなとはおもってる
null入れてArgumentNullExceptionがでるテストも書かなくて良くなる
>ありがちな問題ではない
ありがちかどうかではなく、その機能を導入するメリットとデメリットの釣り合い。
エラーが未然に防げたり、記述が簡潔で見やすくなるならメリット。
文法が複雑になったり、別のバグの原因になったり、動作が遅くなったり、実装に手間がかかるならデメリット。
現状は「新バージョンではnull許容はstring?にしろよ」から「文法は変更せずフロー解析でどうにかしようぜ」までいろんなアイデアがある
個人的には、標準ライブラリの頭nullチェックをしてArgumentNullExceptionを出すようにしているところがいらなくなってライブラリ作者にはメリットがデカそうかなとはおもってる
null入れてArgumentNullExceptionがでるテストも書かなくて良くなる
146デフォルトの名無しさん
2017/05/24(水) 16:22:43.45ID:IRME+Rk/ >>143
>リストに値を入れる段階でプログラマの意図に反してnullが混入する
nullを含まないリストならList<null非許容型>にすれば意図に反してnullが混入しうる状況ではエラーや警告にしてくれるようになる
List<null許容>から変えられないなら、取り出す時にnull非許容にすればその場でエラーが確認できる
フロー解析で検出が無理な状況も当然存在するけど、多分こんなことをするのかな
<現状>
string A(){
string a = Hoge();//Hogeの戻り値はnull
別の処理
return a;//意図せずnullを返してしまう
}
これだと、別の処理中にぬるぽになったり、戻り値がnullになるかも。
Hogeの戻り値が不適切なのに、別の処理中でエラーが起こるのでスタックトレースとかではバグが探しにくい。
<null非許容>
string! A(){
string! a = Hoge().ToNull非許容; //null非許容に変換
別の処理
return a;
}
これが以下のようにコンパイルで展開される
string A(){
string a = Hoge();
if( a == null)throw new Null非許容型変換例外();
別の処理
return a;
}
例外発生箇所が確定するので、バグの位置がすぐにわかる
この例だとnull比較のコストが入ってるけど、俺の知識が浅いだけなのでもっとうまいやり方も多分あると思う
>リストに値を入れる段階でプログラマの意図に反してnullが混入する
nullを含まないリストならList<null非許容型>にすれば意図に反してnullが混入しうる状況ではエラーや警告にしてくれるようになる
List<null許容>から変えられないなら、取り出す時にnull非許容にすればその場でエラーが確認できる
フロー解析で検出が無理な状況も当然存在するけど、多分こんなことをするのかな
<現状>
string A(){
string a = Hoge();//Hogeの戻り値はnull
別の処理
return a;//意図せずnullを返してしまう
}
これだと、別の処理中にぬるぽになったり、戻り値がnullになるかも。
Hogeの戻り値が不適切なのに、別の処理中でエラーが起こるのでスタックトレースとかではバグが探しにくい。
<null非許容>
string! A(){
string! a = Hoge().ToNull非許容; //null非許容に変換
別の処理
return a;
}
これが以下のようにコンパイルで展開される
string A(){
string a = Hoge();
if( a == null)throw new Null非許容型変換例外();
別の処理
return a;
}
例外発生箇所が確定するので、バグの位置がすぐにわかる
この例だとnull比較のコストが入ってるけど、俺の知識が浅いだけなのでもっとうまいやり方も多分あると思う
147デフォルトの名無しさん
2017/05/24(水) 17:14:59.24ID:rw+7fc+A そうだねーPHPから出てこないでね
148デフォルトの名無しさん
2017/05/24(水) 18:01:59.69ID:9Gf4SnqN null許容にするメリットを実感できないんだろうな
149デフォルトの名無しさん
2017/05/24(水) 19:54:58.94ID:wmLMN2ht 使えとは言ってないのにな
親でも殺されたか?
ゴミムシの親なんか区別がつかないだろうが
親でも殺されたか?
ゴミムシの親なんか区別がつかないだろうが
150デフォルトの名無しさん
2017/05/24(水) 23:36:34.45ID:a2/m6a7T151デフォルトの名無しさん
2017/05/25(木) 01:11:21.81ID:lqQtAs3j >>150
nullチェックはNull許容型からNull非許容型にする際の話
nullの可能性があるならタイプマッチとかで消すほうが素直だけど、kotlinとかでは例外を投げる変換を用意してるみたい
修正されてない古いライブラリとかだとnullにはならないけどnull許容型みたいのが存在せざるを得ないので、そういう機能もほしいということじゃないかな
nullチェックはNull許容型からNull非許容型にする際の話
nullの可能性があるならタイプマッチとかで消すほうが素直だけど、kotlinとかでは例外を投げる変換を用意してるみたい
修正されてない古いライブラリとかだとnullにはならないけどnull許容型みたいのが存在せざるを得ないので、そういう機能もほしいということじゃないかな
152デフォルトの名無しさん
2017/05/25(木) 03:16:43.36ID:ezJU1k3U 今のところ超過激なトンデモ案が優勢なのかな?
採用されたら仕事が捗りそうなので、とても期待しているww
採用されたら仕事が捗りそうなので、とても期待しているww
153デフォルトの名無しさん
2017/05/25(木) 03:37:28.50ID:XcDeaOpm null非許容型が追加されるならconstメソッドも
追加してほしいもんだ。
追加してほしいもんだ。
154デフォルトの名無しさん
2017/05/25(木) 03:38:41.10ID:K8EeLAYg いまだに2.0とか3.0やってる化石には全く関係のない話だから
足引っ張らないで欲しいわ
足引っ張らないで欲しいわ
155デフォルトの名無しさん
2017/05/25(木) 11:11:39.41ID:raX4nowj Linqすら使えない自分の職場の悪口は止めてくれないか
156デフォルトの名無しさん
2017/05/25(木) 11:17:54.20ID:TdXNYUaP 職場?お遊戯会の間違いだろ
157デフォルトの名無しさん
2017/05/25(木) 11:41:19.09ID:OZ9w4Yf7 ロック問題で、価値ないつまらんネタ書いている奴こっち来い
適当にあしらってやるよ
適当にあしらってやるよ
158デフォルトの名無しさん
2017/05/25(木) 11:44:07.67ID:raX4nowj >>157
向こうに行ってやれよw
向こうに行ってやれよw
159デフォルトの名無しさん
2017/05/25(木) 11:50:35.84ID:OZ9w4Yf7 最近は、こっちではnull非許容ネタやってるのか・・・
これ導入されたらガベージコレクタの性能落ちたりしないかな
4G越えのでかいツリー構造とか作っていると、参照つなぎ替えだけで色々やばいことが起こるんだよな
できるかぎり、用のないフィールドに参照ぶら下げたくないと最近しつこくnull入れてたりするんだが。
あと、event関係、弱参照で全部作り直さないとヤバないかな。
Taskとかと相性悪くて簡単にメモリーリーク起こすし、 WeakEventManagerでWPFは変態回避してただでさえコード変態状態だし。
VMごと作り直さないと色々噴き出しそうだ
これ導入されたらガベージコレクタの性能落ちたりしないかな
4G越えのでかいツリー構造とか作っていると、参照つなぎ替えだけで色々やばいことが起こるんだよな
できるかぎり、用のないフィールドに参照ぶら下げたくないと最近しつこくnull入れてたりするんだが。
あと、event関係、弱参照で全部作り直さないとヤバないかな。
Taskとかと相性悪くて簡単にメモリーリーク起こすし、 WeakEventManagerでWPFは変態回避してただでさえコード変態状態だし。
VMごと作り直さないと色々噴き出しそうだ
160デフォルトの名無しさん
2017/05/25(木) 11:51:39.74ID:OZ9w4Yf7 >>158
ここはキチガイの建てたゴミ箱、ちょうどいいんだよ。
ここはキチガイの建てたゴミ箱、ちょうどいいんだよ。
161デフォルトの名無しさん
2017/05/25(木) 12:35:35.78ID:KYr+IXo2 >>159
そんな場合はnull許容型を今迄通り使えばよろし
そんな場合はnull許容型を今迄通り使えばよろし
162デフォルトの名無しさん
2017/05/25(木) 12:39:51.97ID:doyjLZp2 なんで択一の考えしか出来ないんだろうな
頭悪いのか?
頭悪いならゴミ回収みたいなルーチンワークしてろよ
頭悪いのか?
頭悪いならゴミ回収みたいなルーチンワークしてろよ
163デフォルトの名無しさん
2017/05/25(木) 12:40:36.41ID:OZ9w4Yf7 >>161
統一性のないコードになりそうだw
ここまで破壊的変更をするなら同じVM上で動く別言語として全く新しく設計した方が良い気がしてきている。
C#と混合してプロジェクトに登録できるようにすればシームレスにつながると思う。
今のC#には、アクロバテックな予約語追加とかも増えてきているし、いろいろ限界が来ていると思うんだ。
統一性のないコードになりそうだw
ここまで破壊的変更をするなら同じVM上で動く別言語として全く新しく設計した方が良い気がしてきている。
C#と混合してプロジェクトに登録できるようにすればシームレスにつながると思う。
今のC#には、アクロバテックな予約語追加とかも増えてきているし、いろいろ限界が来ていると思うんだ。
164デフォルトの名無しさん
2017/05/25(木) 13:22:25.50ID:OZ9w4Yf7 どうせならC#を改造するのではなく、新規言語にして、ここにあるパターンをサクっと言語仕様として実装してみてほしいな。
https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
>一部のデザインパターンは、プログラミング言語(例: Java, C++)の機能の欠損の印であると主張されることがある。
>計算機科学者のピーター・ノーヴィグは、GoFによるデザインパターン本の23パターンのうち16パターンは、
>言語によるサポートによって単純化または除去できることをLispやDylanを用いて実演した。
あと、マルチスレッドプログラミングに関するパターンも、C#で書いていて本当に冗長と感じる。
文法は、Pythonみたいにインデントでネストを書けるようにしてくれれば、Pythonと交互に書くときに {} 忘れで判りにくいバクにならなくて済む。
https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
>一部のデザインパターンは、プログラミング言語(例: Java, C++)の機能の欠損の印であると主張されることがある。
>計算機科学者のピーター・ノーヴィグは、GoFによるデザインパターン本の23パターンのうち16パターンは、
>言語によるサポートによって単純化または除去できることをLispやDylanを用いて実演した。
あと、マルチスレッドプログラミングに関するパターンも、C#で書いていて本当に冗長と感じる。
文法は、Pythonみたいにインデントでネストを書けるようにしてくれれば、Pythonと交互に書くときに {} 忘れで判りにくいバクにならなくて済む。
165デフォルトの名無しさん
2017/05/25(木) 13:37:43.42ID:Gj1BXJi/ >ID:OZ9w4Yf7
基地外こっちでも大暴れかwww
基地外こっちでも大暴れかwww
166デフォルトの名無しさん
2017/05/25(木) 13:39:20.53ID:OZ9w4Yf7167デフォルトの名無しさん
2017/05/25(木) 16:36:05.73ID:Wjjn5VOT まじで基地外だからな・・・
168デフォルトの名無しさん
2017/05/25(木) 17:37:12.65ID:KYr+IXo2169デフォルトの名無しさん
2017/05/25(木) 18:24:15.44ID:6uvmeYQm c#がもし最初から作り直せるとしたらどんなふうにする?
俺は
yield returnじゃなくてyieldにする
ジェネリックをsystemに入れる
俺は
yield returnじゃなくてyieldにする
ジェネリックをsystemに入れる
170デフォルトの名無しさん
2017/05/25(木) 18:31:48.41ID:ISg+EccP 取り敢えずintは64ビットでstringはnull無し
171デフォルトの名無しさん
2017/05/25(木) 18:55:20.09ID:QWlkLrx5 switchのbreakは省略可能にする
172デフォルトの名無しさん
2017/05/25(木) 18:57:08.84ID:yV0yCNuL Nodeが快適すぎる
C#ってなんだったの?
C#ってなんだったの?
173デフォルトの名無しさん
2017/05/25(木) 18:57:54.98ID:6uvmeYQm >>172
言語と動作環境比べられても…
言語と動作環境比べられても…
174デフォルトの名無しさん
2017/05/25(木) 19:21:56.48ID:KYr+IXo2 immutable保証の構文は欲しい
if forは文でなくて式でありたい
副作用隔離文法も欲しい
if forは文でなくて式でありたい
副作用隔離文法も欲しい
175デフォルトの名無しさん
2017/05/25(木) 19:24:16.19ID:BYkVp2J8 ジャップなんて99%素人に毛が生えたレベルなのに使い分けとか酷だ
176デフォルトの名無しさん
2017/05/25(木) 19:36:21.23ID:6uvmeYQm ダック・タイプの問題も最初からすっきり仕様作る
177デフォルトの名無しさん
2017/05/25(木) 19:39:01.89ID:1nEgUyka constとreadonlyの整理
c++のconstが好きだった
c++のconstが好きだった
178デフォルトの名無しさん
2017/05/25(木) 19:56:07.17ID:KYr+IXo2 デフォルトでconst
キーワード指定した時だけ非const
が良いなあ
キーワード指定した時だけ非const
が良いなあ
179デフォルトの名無しさん
2017/05/25(木) 20:07:38.18ID:ZdIAUNK0 何が嫌かと言えばVMだな。最初からネイティブコードコンパイラーならC++すら凌駕したかもしれん
180デフォルトの名無しさん
2017/05/25(木) 20:09:09.51ID:lGDY6SHI 少なくともC#のconstとreadonlyは機能的に違うし、
どちらを無くされても困ると思うけど...
どちらを無くされても困ると思うけど...
181デフォルトの名無しさん
2017/05/25(木) 20:10:14.40ID:VSmfM+8N >>172
フレームワークって知ってる?
フレームワークって知ってる?
182デフォルトの名無しさん
2017/05/25(木) 20:18:46.47ID:6uvmeYQm 名前空間の分割をもっと簡素にする
今はusing増えすぎでめんどい
あと一ファイルに名前空間一つに限定で
ファイル先頭で指定、{ }なしにする
namespace Hoge.Hoge :
これでwebからのコードのコピペが楽になる
今はusing増えすぎでめんどい
あと一ファイルに名前空間一つに限定で
ファイル先頭で指定、{ }なしにする
namespace Hoge.Hoge :
これでwebからのコードのコピペが楽になる
183デフォルトの名無しさん
2017/05/25(木) 20:24:26.30ID:vS0Oxp45 switch の最後の節の break は不要にする
ってかこれぐらいすぐやれ
毎回モヤモヤするんだよ
ってかこれぐらいすぐやれ
毎回モヤモヤするんだよ
184デフォルトの名無しさん
2017/05/25(木) 20:26:15.77ID:1nEgUyka185デフォルトの名無しさん
2017/05/25(木) 20:28:33.23ID:SU7CE5fr readonlyは長すぎる
javaのfinalもだけど頼むから多用する奴は3文字以内にしてくれ
scalaなら定数も変数も同じ3文字だから揃って見やすいのに
javaのfinalもだけど頼むから多用する奴は3文字以内にしてくれ
scalaなら定数も変数も同じ3文字だから揃って見やすいのに
186デフォルトの名無しさん
2017/05/25(木) 20:29:42.51ID:lGDY6SHI >>184
では整理とは具体的にどういう意味でしょう
では整理とは具体的にどういう意味でしょう
187デフォルトの名無しさん
2017/05/25(木) 20:33:29.10ID:OZ9w4Yf7 細かい機能系だと == オーバーロードが割と収集つかない感じなっているので
object.ReferenceEquals object.Equals を毎回書く羽目になり始めている
これは無駄なので == オーバーロードは廃棄して
object.ReferenceEquals object.Equals の糖衣構文として === !== == != という形にして欲しい。
Java屋がC#登場時に==オーバーロードはヤバイと警告していたが、今のC#は本当にそうなってしまった。
当初は気にしすぎと思っていたが、これは良くなかったな。
<= >= なんかも最低1個書けば残りは自動的に実装してほしいな。
== != はobject.Equalsは必須なので、あとは < <= >= > のいずれか一個を定義すれば残りは全部生成可能。
IComparable<A>を実装したのなら、逆にそこからobject.Equalsを実装してほしい。
object.ReferenceEquals に対応する GetHashCode() は簡単に利用できるべきだ。
LINQを使うときに、Distinct()などで、object.ReferenceEqualsを使いたいケースは多い。
どの比較を使うのか簡単に指定できるようになって欲しい。
比較演算子は、三引数の演算子にして、比較方法、比較対象1、比較対象2という感じにして
a ==[比較方法] b のような感じで扱えるようになると見通しが良くなると思う。
今のC#は、ラムダ式と比較用interfaceが入り混じって混沌の世界と化している。
object.ReferenceEquals object.Equals を毎回書く羽目になり始めている
これは無駄なので == オーバーロードは廃棄して
object.ReferenceEquals object.Equals の糖衣構文として === !== == != という形にして欲しい。
Java屋がC#登場時に==オーバーロードはヤバイと警告していたが、今のC#は本当にそうなってしまった。
当初は気にしすぎと思っていたが、これは良くなかったな。
<= >= なんかも最低1個書けば残りは自動的に実装してほしいな。
== != はobject.Equalsは必須なので、あとは < <= >= > のいずれか一個を定義すれば残りは全部生成可能。
IComparable<A>を実装したのなら、逆にそこからobject.Equalsを実装してほしい。
object.ReferenceEquals に対応する GetHashCode() は簡単に利用できるべきだ。
LINQを使うときに、Distinct()などで、object.ReferenceEqualsを使いたいケースは多い。
どの比較を使うのか簡単に指定できるようになって欲しい。
比較演算子は、三引数の演算子にして、比較方法、比較対象1、比較対象2という感じにして
a ==[比較方法] b のような感じで扱えるようになると見通しが良くなると思う。
今のC#は、ラムダ式と比較用interfaceが入り混じって混沌の世界と化している。
188デフォルトの名無しさん
2017/05/25(木) 20:35:22.76ID:SU7CE5fr >>187
トレイトがあれば自動実装出来るのにな…
トレイトがあれば自動実装出来るのにな…
189デフォルトの名無しさん
2017/05/25(木) 20:37:17.55ID:yV0yCNuL C++に回帰するのだ
190デフォルトの名無しさん
2017/05/25(木) 20:42:49.06ID:OZ9w4Yf7191デフォルトの名無しさん
2017/05/25(木) 20:44:09.62ID:6uvmeYQm c++はほらバカには便利だろう見たいな新機能をいれてるけどそれすら使いこなしにくい
192デフォルトの名無しさん
2017/05/25(木) 20:46:56.61ID:lm8UuBKM193デフォルトの名無しさん
2017/05/25(木) 20:47:18.02ID:yV0yCNuL C#が滅んでも困らないからいいや
node.jsがあれば安泰
node.jsがあれば安泰
194デフォルトの名無しさん
2017/05/25(木) 21:04:38.19ID:dzSQ5kE9 >>188
キチガイに触るな
キチガイに触るな
195デフォルトの名無しさん
2017/05/25(木) 21:08:44.13ID:B4esX4Id >>190
糖衣構文を要求したその口で「収集のつかない言語拡張」とか一体何の冗談?
糖衣構文を要求したその口で「収集のつかない言語拡張」とか一体何の冗談?
196デフォルトの名無しさん
2017/05/25(木) 21:10:56.06ID:OZ9w4Yf7 immutableを構文を作るのであれば、new でプール中にすでに同じ内容のオブジェクトが無いか調査して
既にあるならそちらを利用する仕組みも欲しいな。
これを利用する場合比較演算子EqualsとReferenceEqualsは同じ結果になるのでEqualsもGetHashCodeも自動実装の物でよい。
オブジェクトプールは、弱参照のHashSetで実装される事になると思うが、弱参照の先が死んでいた場合、HashSetの登録項目も整理できる。
ガベージコレクトと一緒にこれを整理できればより効率的だが、これは現状ライブラリベースで作る事は出来ない、VM側のサポートが必要。
これについては、メモリ管理にリファレンスカウンタを実装しても良いと思う、基本はリファレンスカウンタでマークスイープはゴールキーパーとして機能させる感じで。
既にあるならそちらを利用する仕組みも欲しいな。
これを利用する場合比較演算子EqualsとReferenceEqualsは同じ結果になるのでEqualsもGetHashCodeも自動実装の物でよい。
オブジェクトプールは、弱参照のHashSetで実装される事になると思うが、弱参照の先が死んでいた場合、HashSetの登録項目も整理できる。
ガベージコレクトと一緒にこれを整理できればより効率的だが、これは現状ライブラリベースで作る事は出来ない、VM側のサポートが必要。
これについては、メモリ管理にリファレンスカウンタを実装しても良いと思う、基本はリファレンスカウンタでマークスイープはゴールキーパーとして機能させる感じで。
197デフォルトの名無しさん
2017/05/25(木) 21:11:49.39ID:lGDY6SHI >>187
何言ってるのかよく分からうけどカオスを増加させるだけにしか思えんな
参照型の==がデフォで参照の比較になっているのが混乱の元だと言いたいならそこは同意する。
VBと同じように参照等価検査専用の演算子を用意して==はオーバーロードしない限り
使えないようにしてくれた方が分かりやすかったと思う
何言ってるのかよく分からうけどカオスを増加させるだけにしか思えんな
参照型の==がデフォで参照の比較になっているのが混乱の元だと言いたいならそこは同意する。
VBと同じように参照等価検査専用の演算子を用意して==はオーバーロードしない限り
使えないようにしてくれた方が分かりやすかったと思う
198デフォルトの名無しさん
2017/05/25(木) 21:14:05.32ID:OZ9w4Yf7 >>195
お前みたいな馬鹿には分からないのですw
お前みたいな馬鹿には分からないのですw
199デフォルトの名無しさん
2017/05/25(木) 21:18:19.71ID:OZ9w4Yf7 >>197
オーバーロードしたらEqualsとの違いが不明確になる。
使う側にはそれはとても伝わりにくい。
だから==と書けばそれはEqualsの事であるという事にした方が簡潔だと思うよ。
比較は頻発するので毎回Equalsを書くのはさすがに面倒。
オーバーロードしたらEqualsとの違いが不明確になる。
使う側にはそれはとても伝わりにくい。
だから==と書けばそれはEqualsの事であるという事にした方が簡潔だと思うよ。
比較は頻発するので毎回Equalsを書くのはさすがに面倒。
200デフォルトの名無しさん
2017/05/25(木) 21:18:19.88ID:iDw56Z9j c#とc++の違いが分からん
201デフォルトの名無しさん
2017/05/25(木) 21:24:52.13ID:VSmfM+8N >>200
+が2個多いだろ、よく眺めてみろ
+が2個多いだろ、よく眺めてみろ
202デフォルトの名無しさん
2017/05/25(木) 21:27:49.57ID:SU7CE5fr203デフォルトの名無しさん
2017/05/25(木) 21:54:41.07ID:sQqbIl08 C#を食ったらケツからC++が出るのか
204デフォルトの名無しさん
2017/05/25(木) 21:58:44.98ID:1nEgUyka >>186
そんなん知らんよw
なんで具体的な提案なんかしなきゃならんのだ
2種もキーワードがあるのにc++のconstに比べて貧弱だなーって思っただけ
この部分がもっと便利になればいいねーくらいで話ししてんのに難癖つけられてもなー
そんなん知らんよw
なんで具体的な提案なんかしなきゃならんのだ
2種もキーワードがあるのにc++のconstに比べて貧弱だなーって思っただけ
この部分がもっと便利になればいいねーくらいで話ししてんのに難癖つけられてもなー
205デフォルトの名無しさん
2017/05/25(木) 22:05:37.39ID:OZ9w4Yf7 関数型のように値は一度割り当てたら変更不能というストリクトな仕様は
変数一つ一つに意味を考えて名前を付けるようになれるので見通しは良くなるね。
半面、ビギナーには辛いやり方だと思う。
変更できない物だけでどうやって変化していくものを表現するのか分からなくて途方にくれそうな絵が見える。
果たして吉とでるか凶とでるか?
変数一つ一つに意味を考えて名前を付けるようになれるので見通しは良くなるね。
半面、ビギナーには辛いやり方だと思う。
変更できない物だけでどうやって変化していくものを表現するのか分からなくて途方にくれそうな絵が見える。
果たして吉とでるか凶とでるか?
206デフォルトの名無しさん
2017/05/25(木) 22:07:44.05ID:06apVH37 >>201
どっちも+2個だろー
どっちも+2個だろー
207デフォルトの名無しさん
2017/05/25(木) 22:16:44.94ID:dzSQ5kE9 ┏━ ╋╋
┗━ ╋╋
┗━ ╋╋
208デフォルトの名無しさん
2017/05/25(木) 23:36:14.82ID:VSmfM+8N >>206
C#は4つだろ
C#は4つだろ
209デフォルトの名無しさん
2017/05/26(金) 00:05:23.61ID:grHVRT/B やっぱメモリ管理は自動の方がいいですか?
210デフォルトの名無しさん
2017/05/26(金) 00:15:54.83ID:R9lW8EDm >>209
自動の方がいいと思うよ、安心感が全然違う。
ただ、マークスイープはオブジェクト総数増大につれてパフォーマンスに問題が出始めている感じがする。
ガベコレはすべてのスレッドを止めないと始められないが、オブジェクト総数増大とともに停止時間がやばくなる。
極力、マークスイープ以外の方法で回収できる感じにした方が良いかもしれないと最近は思う。
自動の方がいいと思うよ、安心感が全然違う。
ただ、マークスイープはオブジェクト総数増大につれてパフォーマンスに問題が出始めている感じがする。
ガベコレはすべてのスレッドを止めないと始められないが、オブジェクト総数増大とともに停止時間がやばくなる。
極力、マークスイープ以外の方法で回収できる感じにした方が良いかもしれないと最近は思う。
211デフォルトの名無しさん
2017/05/26(金) 00:29:53.59ID:4xYFMnBo212デフォルトの名無しさん
2017/05/26(金) 00:33:29.03ID:R9lW8EDm >>210
少なくともC#では、スタック周りだけでしょう。
シンプルな世代別ガベコレで実装されていると思われます。
C#ではC++のスマートポインタのようにスコープ抜けた瞬間に回収される所は見ないです。
それでは解決しきらないというのが自分の環境では起こり始めつつある。
少なくともC#では、スタック周りだけでしょう。
シンプルな世代別ガベコレで実装されていると思われます。
C#ではC++のスマートポインタのようにスコープ抜けた瞬間に回収される所は見ないです。
それでは解決しきらないというのが自分の環境では起こり始めつつある。
213デフォルトの名無しさん
2017/05/26(金) 00:38:57.52ID:R9lW8EDm まぁ、C#の場合すべて強参照状態なんで参照カウンタで実装したところで
よほど意識してくれないかぎり有効に機能してくれない可能性は現状では高いですね。
特にevent回りとasync/await/Task回りに言えます。
よほど意識してくれないかぎり有効に機能してくれない可能性は現状では高いですね。
特にevent回りとasync/await/Task回りに言えます。
214デフォルトの名無しさん
2017/05/26(金) 00:40:01.31ID:Mhihnqx0215デフォルトの名無しさん
2017/05/26(金) 00:43:15.17ID:R9lW8EDm >>214
規模が小さいなら、使い捨てても使い捨てなくても、もともとパフォーマンスが問題になる事はないんですよ。
パフォーマンスが問題になるほど規模が大きくなっているので負担が大きいのは必然なんです。
トートロジーみたいな議論だからその反論は無意味。
規模が小さいなら、使い捨てても使い捨てなくても、もともとパフォーマンスが問題になる事はないんですよ。
パフォーマンスが問題になるほど規模が大きくなっているので負担が大きいのは必然なんです。
トートロジーみたいな議論だからその反論は無意味。
216デフォルトの名無しさん
2017/05/26(金) 02:06:01.59ID:7MLVuo4L217デフォルトの名無しさん
2017/05/26(金) 03:47:01.99ID:jh4BS3n9 >>216
え?金も出ないのに次期言語仕様のドラフト上げろっていうの?
君がどれくらいの人にアンケート取って肯定的な人が居ないと言ってるのか知らんが逆に否定的な人はどうなの?
肯定的な人が居ないのはそもそもちゃんと使ってる人が少ないからってだけでは?
assertionとかもそうだけど無くても問題もないものは当然初心者向けサイトでは扱われず使用者も少なくなりがち
ちなみにconst c# c++ってググれば検索上位は似たような内容が国内外含め結構出てくるよ
え?金も出ないのに次期言語仕様のドラフト上げろっていうの?
君がどれくらいの人にアンケート取って肯定的な人が居ないと言ってるのか知らんが逆に否定的な人はどうなの?
肯定的な人が居ないのはそもそもちゃんと使ってる人が少ないからってだけでは?
assertionとかもそうだけど無くても問題もないものは当然初心者向けサイトでは扱われず使用者も少なくなりがち
ちなみにconst c# c++ってググれば検索上位は似たような内容が国内外含め結構出てくるよ
218デフォルトの名無しさん
2017/05/26(金) 09:30:04.80ID:g456XZgo C++を肯定的な奴少ないが使ってるのは多い。置き換えきれる言語がないんだよ
219デフォルトの名無しさん
2017/05/26(金) 11:01:05.91ID:2e/JbZY2 constは地獄でしょ
220デフォルトの名無しさん
2017/05/26(金) 11:41:49.76ID:2utmFH39 >>218
いい得てるわw
いい得てるわw
221デフォルトの名無しさん
2017/05/26(金) 13:10:14.69ID:V0QADimW c#でポインタが使えれば俺はc++はもういらない。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【高市核兵器】 小泉コメ防衛大臣「民主党政権 岡田外務大臣の “非核三原則” に関する国会答弁を引き継いでいる」 政策堅持を明言 [485983549]
- 海産物は雄の生殖器の方が美味しいの人体のバグだろ
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- Apple Arcade凄い。ゲーム遊び放題。言うなればゲームの食べ放題。サブスク
- 犯罪者たち「刑事罰受けて罪は償った!被害者への賠償金?もう反省済みだから一円も払わねーよばーかwww」 [177178129]
- ㊗157円 [194819832]
