1 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 15:36:53.26 ID:S+KK7a41.net] ■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part92 (実質93) echo.2ch.net/test/read.cgi/tech/1485589613/ ■次スレは>>970 が建てる事 建てられない場合は他を指定する事。
22 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 02:07:44.75 ID:zwb7nwH/.net] ちなみにここにはfalse->trueの順(>>19 の通り)と書いてあるが、 これって準仕様書の扱いになる? (URLは長すぎて切りましたので1行に繋いでください) https://books.google.co.jp/books?id=sygW0iEw2zkC&pg=PA217&lpg=PA217&dq=.NET+ radiobutton+CheckedChange+event+order&source=bl&ots=A3ndItBpMH&sig=BHLCZLbBQIkAq_Gzq37viy_nGW8&hl= ja&sa=X&ved=0ahUKEwjTx4zLhrvTAhVLabwKHaQ-AoMQ6AEIYzAH#v=onepage&q=.NET%20radiobutton%20CheckedChange%20event%20order&f=false
23 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 02:17:02.23 ID:zwb7nwH/.net] >>20 いや普通はAutoCheckはtrueで使うだろ。規定値もそうだし。 順に依存しないコードにも出来るが、 これまで順が保証されていたつもりで書いているから 全RadioButtonのハンドラを確認しないといけないんだな。 (というかこのコメントだと逆順のところが大量にありそうな気がして怖い) とりあえず確認したいのは、「順が保証されているか」「昔からか」だね。 ダメならダメで書き直すけど。 一般的に(他環境でも)RadioButtonのイベント順は保証されている(と俺は思っている)ので、 特に悪い使い方でもないとは思うのだが。
24 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 02:27:32.36 ID:7scL/w5T.net] >>22 まあ議論するつもりも俺のやり方をごり押しするつもりもないけど、 本来ビューはあくまでモデルの状態を表示する表示器でしかないはずで、 AutoCheckのようにビューがビュー自身でどの項目がcheckされるかを決めるような機能は ちょっと問題だと思うよ。
25 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 03:02:34.76 ID:zwb7nwH/.net] >>23 いやそれは君の方がおかしいよ。 RadioButtonは「一つしか選択されない」というものだから。 というか、UIとしてはそういう使い方しかしてはいけない。 だからそれを自動的にやらせるプロパティがデフォでONになってる。 そして通常はイベント順が決まっているので、 サンプルコードでもCheckedを見ろ、ということになっている。 それを手動でやることも出来るけど、コードの無駄でしょ。 MVC原理主義的には認められないのかもしれないけど。 君はテキストボックスの入力文字も xterm等のターミナルみたいにモデルと通信すべきだとか言うのかい? それはいくら何でもやりすぎでしょ。 ラジオボタンのAutoCheckもそれだよ。 多分、AutoCheckを切る使い方の方が少ないと思うよ。 HTML(JavaScript)ではそもそも切れないし。(俺が知らないだけかもしれんが) .NETは機能が多いけど、使いもしない機能が多いのも事実。 なおJavaも多分AutoCheckに該当する物はないと思うが、 いかんせんドキュメントが見にくくてよく分からん。 https://docs.oracle.com/javase/jp/6/api/javax/swing/JRadioButton.html ただ、良い悪いはさておき、仕様として順を保証してないんだったら修正するしかない。 .NETの仕様書ってMSDNだよね? 書いてないって事は保証無しなのかな? まあ知ってる人居たらお願いします。
26 名前:デフォルトの名無しさん [2017/04/24(月) 12:45:21.88 ID:WhX9zIin.net] >>18 ありがとうございました
27 名前:デフォルトの名無しさん [2017/04/24(月) 13:30:02.16 ID:JE5n6vCM.net] C#2008
28 名前:ニIpython2.7を使用しているが、使い分けが不自然 GUI=C#,CUI=Ipython としておりすが、恩恵を受けている感じがしません どの様に使えば、もっとも、良いでしょうか? [] [ここ壊れてます]
29 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 17:26:40.36 ID:VzMv01/A.net] >>19 保障ってどういう意味? 仕様書に明記されていない事は実装依存で保障されてないわけだが いまだかつてそのような仕様が明記された資料はみたことないけど そもそもイベントって 発行した順にイベントハンドラが実行される保障や 複数のイベントハンドラを一つのイベントに登録したときにイベントハンドラの 登録順に実行される保障なんてあったか?
30 名前:デフォルトの名無しさん mailto:sage [2017/04/24(月) 23:01:32.26 ID:aUzRCcRy.net] >こちらの環境(.NET3.5と.NET2.0の両方)で上記順であることは確認したのだけど これはあかん ダメなパターンや 論理的に物事を考えられない思考やで
31 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 00:46:29.16 ID:WJVYNUba.net] >>27 デバッグビルドとリリースビルドでイベントの前後関係が違ってバグるとかたまにあるな。
32 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 06:57:14.61 ID:I1FtjD3/.net] まあ痛い目に何度かあえばそのうち改心するでしょ
33 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 07:58:25.82 ID:5weZPMgK.net] >>27-30 このスレも急にゆとり汚染で劣化しててびっくりだわ。 お前らってそういうところあるよね。 事実かどうかではなく、そう思うかどうかが全てだという。 >>27 そのレスには俺ですら知っているほどの明確な間違いを含んでいるけど、 詳細は言わないことにするよ。 俺はゆとりは死んで欲しいと思っているから。
34 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 08:10:58.01 ID:DkSnRcKc.net] >>31 決まっていない事実は全て「偶然」 物事を演繹的に考えられない奴はネットワーク機器でも弄ってたほうが幸せになれるよ 煽りじゃなく向き不向きの問題
35 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 08:41:59.71 ID:d/fTF244.net] >>31 ゆとりとかいつの時代だよ
36 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 08:47:06.56 ID:urtDfpDE.net] 仮に現環境で動いても仕様として明記されてないちょっとしたバージョンアップで狂うかもしれん内容に依存した実装なんてしたくない
37 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 09:37:49.02 ID:NFildF04.net] >>31 ゴミは減らず口叩いてないで死んでろよ 魚の餌にでもなってろ
38 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 10:28:03.55 ID:sJGMscvy.net] 外野だけど、 RadioButton コントロールは、 同じグループ内の他のオプションボタンと同時にオンにすることはできません。 その上で、RadioButton.CheckedChanged イベントは、 Checked プロパティの値が変更された場合に発生します。 ただ、イベントハンドラ内でイベントハンドラが呼ばれる事を否定していないので、 例えば、RadioButton.CheckedChanged内で意図的にChecked プロパティをtrueに 変更したりすると、 RadioButton.CheckedChangedの処理中に別のRadioButton.CheckedChangedが呼び 出されます。 だから、false→trueのように見えるけど、 この点は注意しろよって事なんでしょう とエスパ−
39 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 10:32:24.88 ID:XjlU4ojX.net] JSON文字列のDeserializeで時々エラーが出ます。 原因は、JSON文字列の変換後にList<string>になる事を想定しているのですが、 たまに要素が一個だけ持つJSONが来るのでそれはListに出来ないからのようです。 場合を分けるしかないですか?
40 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 11:31:33.17 ID:DZfkzF9H.net] 文字列想定してるのに文字が来た。 みたいな事? じゃあ、文字が来た
41 名前:辷齦カ字の文字列にすればおk。 場合分けしかないですか?って、それで解決するのに何悩んでるの。 [] [ここ壊れてます]
42 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 12:17:43.78 ID:Jr/kyMK0.net] そのJSON出力してる奴を脅してお誂え向きな仕様にしてもらえ
43 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 13:03:26.63 ID:XjlU4ojX.net] >>39 デシリアライザーが気を利かせて要素一個のList<string>に変換してくれれば良いのですが。誰か作ってくれませんか?
44 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 13:04:55.01 ID:r9UOxgu2.net] 自分で書けずにコピペで作ってんのか
45 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 13:18:46.90 ID:DZfkzF9H.net] JSON使った事ないから知らんが、要素一個(文字列ではなく文字)だったら.toString()ってすりゃ済む話かと思ったんだが、違うのん?
46 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 14:38:56.72 ID:5peHc28u.net] >要素が一個だけ持つJSONが来るのでそれはListに出来ないからのようです。 ここが曖昧、そして重要 そもそもデシリアライザは何を使ってるん?
47 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 16:14:25.09 ID:Z3ZAA/Q1.net] window.client.mouse.pointにアクセスしたい変数があり、その型が struct Point {int x; int y;} // publicは省略 のとき c++であれば Point &p = window.client.mouse.point; で参照を持ってきてpに代入をするとwindow.client.mouse.pointの値も変わるように出来ますが、c#で同じようなことをするにはどうしたら良いのでしょうか?
48 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 17:01:59.12 ID:3d41+u/C.net] >>44 できまふぇん
49 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 17:06:47.28 ID:gy+i7xO9.net] >>44 変数はunsafe指定でポインタとしてしか宣言出来ない。 関数の引数ならRef付ければ参照得られる。
50 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 17:07:13.97 ID:5peHc28u.net] できません C#は、関数型言語になりたがっているので、 今後もエイリアスに相当する機能は実装されないでしょう
51 名前:44 mailto:sage [2017/04/25(火) 20:40:44.01 ID:3BEHaskK.net] ありがとうございます unsafeでやることにします
52 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 21:29:27.89 ID:swVfUf+h.net] C#7.0で実装されたよ
53 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 22:27:15.84 ID:WCmf7fbx.net] ふつうに ref Point p = ref window.client.mouse.point;
54 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 23:50:24.24 ID:5weZPMgK.net] >>36 色々間違ってるぞとだけ言っておく。
55 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 01:46:46.08 ID:gXPydJZJ.net] >>37 そりゃJSON送ってくる奴がバグってるだろ その要素は文字配列だって定義してるなら、 JSON配列の中身が 1個なら hoge : ["fuga"] 2個なら hoge : ["fuga","fuga"] という形になるはず。 1個の時 hoge : "fuga" で来るならそれは不具合ってやつだ
56 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 05:49:58.44 ID:uOwZ+L6x.net] >>51 お、おう
57 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 09:20:07.34 ID:OuCtoXhL.net] イントラネット上のTCP/IP通信に関する質問なんですが ネットワーク上に「A,B,C」の3つのPCがあるとして、例えば 「A→B」「B→C」「C→A」「A→B」のようにデータのやり取りをしたいといった場合 (同じデータを渡すのではなく、BはAからの受信があったらある処理を実行させ その結果をCに渡し、Aに処理内容を返す。CはBから渡された結果で別の処理を実行し 処理内容/完了をAに通知する。Cからの完了通知を受けたAはまたBに処理の実行通知を出すといったような) それぞれのPCのアプリケーションに実装するのは、どういった感じになるでしょうか。 今までにこういったことをしたことがなく色々調べてはみましたが この場合はサーバー?クライアント?となったりでいまいちピン
58 名前:とこず理解がなかなか進みません。。 何か解かりやすいアドバイスや今時のやりかたを教えて頂けないでしょうか ちょっと何言ってるかわからなかったらすみません [] [ここ壊れてます]
59 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 10:19:19.71 ID:LAzkzAvR.net] >>54 サーバーを1人決めて、仕様を満たすように作るだけ
60 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 10:43:47.34 ID:9smF/Lqp.net] >>54 同期しようとするとカオスになるのでメッセージキューを使うのがいいと思う AMQPとか
61 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 10:47:57.13 ID:LAzkzAvR.net] >>56 サーバーを1人確定すれば並列になりそうにない仕様なので キューはいらんような気がする
62 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 12:42:38.93 ID:vx1v4EP3.net] >>52 そんなことはわかっててそうは言っても送信側には手を入れられないとかの話だろ エスパーしろとまでは言わんけどちょっとは察しろよ
63 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 12:49:09.95 ID:vx1v4EP3.net] >>54 そのままプログラム化するだけだと思うが 問題は最初のきっかけはどうするかとか途中でエラーになった時にどう回復するかだと思う そういう意味で >>55 のようにサーバー決めてそいつが管理するように作った方がトラブルになりにくいしトラブっても調査や復旧が簡単 >>56 はメッセージキューって言いたいだけだろ
64 名前:デフォルトの名無しさん [2017/04/26(水) 19:45:07.41 ID:RLi7Pcio.net] >>54 です レスくださった方々ありがとうございます 頂いたアドバイスでもう一度考えてみたいと思います ちなみにイントラネット上であれば開いたソケットはアプリを閉じない限りクローズする必要はないでしょうか あとは仕様的に同期式でいけそうな場合でもポーリングなどはせずに非同期のイベント通知などで設計するのが普通でしょうか
65 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 21:23:02.37 ID:GxL6YYLm.net] >>60 とりあえずtcpのサンプルでも貼り付けて実行してみなよ
66 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 21:36:27.67 ID:mlRIWo89.net] >>60 > ちなみにイントラネット上であれば開いたソケットはアプリを閉じない限りクローズする必要はないでしょうか 当然だけどリッスンポートは待ち受けで開いたまま コネクトする側は必要なくなったら閉じるのが普通
67 名前:デフォルトの名無しさん mailto:sage [2017/04/27(木) 00:21:44.79 ID:GJNrvvrA.net] オブザーバー、発行・購読 中央管制塔ありのメディエイター メッセージキュー
68 名前:デフォルトの名無しさん [2017/04/27(木) 07:42:43.29 ID:fVk5qOLv.net] >>61 >>62 ありがとうございます もう少しサンプルを調べて勉強してみます
69 名前:デフォルトの名無しさん [2017/05/06(土) 00:24:40.77 ID:LiC8gZ+P.net] こっちか
70 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 20:59:26.88 ID:Ug4uYIda.net] C#って言語とランタイムの性能はいいけどエコシステムが貧弱だな
71 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 21:02:34.01 ID:rHqwwCfA.net] 最近はNuGetもかなり充実したけどJavaにはさすがに到底敵わない
72 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 21:28:20.78 ID:Lj2qZJuK.net] >>67 なんでNuGetとJava比べてんの?
73 名前:デフォルトの名無しさん mailto:sage [2017/05/17(水) 21:49:09.74 ID:OvRO5BGY.net] >>67 これは恥ずかしい
74 名前:67 mailto:sage [2017/05/17(水) 23:19:09.78 ID:SKu/yZ4u.net] なんで叩かれてるのか知らないけど、Mavenリポジトリと言えば満足?
75 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 00:04:10.18 ID:JYcaMM6T.net] web系の自動化ツール充実度に嫉妬
76 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 03:52:39.26 ID:nv0hNXKv.net] >>70 具体的に
77 名前:デフォルトの名無しさん mailto:sage [2017/05/18(木) 06:54:17.24 ID:Zif2rhHO.net] >>71 Web系はやっつけだろうが早くリリースするのが至上命題だからテストを自動化しないとカオスになる
78 名前:デフォルトの名無しさん mailto:sage [2017/05/19(金) 23:40:22.50 ID:K2XF16mV.net] クラスのメンバー
79 名前:フ型を動的に変更するなどは可能ですか? 例えばMyClassのメンバーに public string name { get; set; } が有るとして、それを一時的に public List<string> name { get; set; } に変えるなど可能ですか? [] [ここ壊れてます]
80 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 00:19:20.01 ID:/WJez+wG.net] >>74 できない 何のためにそんなことをしたいのか
81 名前:デフォルトの名無しさん [2017/05/20(土) 00:28:41.92 ID:lbI4YU5N.net] public string|List<string> name { get; set; } じゃ駄目?
82 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 00:44:05.60 ID:I6OViHCS.net] >>74 そのメンバーに色々な型のデータを突っ込みたいなら dynamic 型を調べるがよろし
83 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 01:21:14.87 ID:aMCzC0+r.net] >>76 ありがとうございました。うまく行きました。 こんな手法があるんですね。
84 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 02:50:37.33 ID:/vBlyS11.net] え、なにそれは
85 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 03:36:45.84 ID:XoWVmAv8.net] >>76 このテクニックなんか名前ついてるの?
86 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 04:31:41.03 ID:DT+L3BmX.net] アンカーの付け間違い
87 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 06:41:31.55 ID:hBo0eJTZ.net] コンパイル通らねーよw意味不明
88 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 10:23:12.61 ID:wDlYVPvY.net] 素直にgenerics使え
89 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 11:05:10.16 ID:NUOkmiRN.net] nameとnamesの区別がついてないクソPG
90 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 11:05:32.94 ID:lbI4YU5N.net] あっTypeScriptと勘違いしてた C#じゃ出来なかったわ すまん
91 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 11:08:01.58 ID:NUOkmiRN.net] いつどこからアクセスするかわからないプロパティの型を可変にする意味は何? 実際バグ出したいだけだろ?
92 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 12:26:52.90 ID:pKHKYg56.net] 静的に型付けされてるメンバーを動的に変更することは出来ないに決まってるねw 逆に出来たら困る なんか静的に型付けされているってことの意味が分からない人が時々いるよね 型Bと型Cの両方を受け入れるプロパティが欲しいならプロパティーの型を共通のベースクラスAにして、 プロパティの値はプログラマの責任で適切にキャストして使うしかない あとはBとCの間で相互に暗黙変換できるようにするとか
93 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 12:28:59.33 ID:Lw3rlvDI.net] 初心者は制約があるより自由にかけるほうが良いと思う時期があるものさ 問題があった時にどこからでもさわれたほうが対処しやすいからフィールドは全部publicにしたほうがいいとかね
94 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 17:55:46.01 ID:lhYW/664.net] ふらっとでやろう
95 名前:デフォルトの名無しさん [2017/05/20(土) 22:16:05.31 ID:tNlWtPh8.net] class A { public int i; public virtual void storeNumber(int arg){ i = arg; } } class B : A { public new int i; public override void storeNumber(int arg) { base.storeNumber(arg); i = arg; } } A typeA = new B(); typeA.storeNumber(1); System.Console.WriteLine(typeA.i); //1 B typeB = (B)typeA; System.Console.WriteLine(typeB.i); //1 typeB.storeNumber(2); System.Console.WriteLine(typeA.i); //2 System.Console.WriteLine(typeB.i); //2 new キーワードのメンバは変数の型で参照先が決まると書いてあったんですが A型の変数から呼び出しても、オーバーライドしたクラスBのメソッドから代入すれば new が付いてるint i でも値を代入できるということでいいんでしょうか?
96 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 22:22:56.23 ID:spqPzklw.net] いまいち言いたいことは分からんがそうだよ
97 名前:デフォルトの名無しさん [2017/05/20(土) 22:49:49.46 ID:tNlWtPh8.net] >>91 ありがとうございます。オーバーライドとbaseのことを調べてコード書いてたら これでひっかかってたので助かりました。
98 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 23:36:54.63 ID:PmwbqNDX.net] 隠蔽した本人から隠蔽後のメンバーじゃなくて 隠蔽したはずのベースクラスのメンバーが見えるなら何のための隠蔽よww まあでも、どうせ隠蔽なんてまず使わないw 俺が使ったのはたぶんWindows Formのコントロールをカスタマイズするときに virtualになってないメンバーを苦し紛れになんちゃってオーバーライドする時ぐらいだ
99 名前:デフォルトの名無しさん mailto:sage [2017/05/20(土) 23:56:17.91 ID:/WJez+wG.net] 隠蔽は後から他の奴が基底クラスに同一シグネチャのメンバを追加しやがったときに 派生クラスが壊れないようにするための仕様だよ 積極的に使うものではない 当時のMSは極度の互換性パラノイアに陥っていたため、C#はバージョニングに関しては異常に神経質設計されている
100 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:03:34.57 ID:+V9bC4xn.net] ヌル許容のdatetimeだとyear関数とか使えないんですか? 入力必須じゃない項目なので困っています。
101 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:15:28.78 ID:jI6oRZ6H.net] >>95 dt?.Year
102 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:17:58.62 ID:F7+6VHDt.net] ヌル許容のdatetimeってわからない。.NETのは構造体なのに
103 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 12:21:51.82 ID:3W0XlzKr.net] 大分前からヌルが基本的に無いintとかにヌル入れられるヌル許容型ってのがあるが。。。 int? x = 123; int? y = null;
104 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 13:22:43.56 ID:edjbow2J.net] >>95 つかえるよ コード間違えてないか?
105 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 14:04:03.15 ID:A3vGR0ii.net] stringですら?付けてstring?にしようという時代に 細かいことをごちゃごちゃと
106 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 17:45:15.21 ID:PJIONmxy.net] stringは参照型だから元からヌル許容してたのに、なぜヌル許容型をわざわざ? 浦島太郎で申し訳ないが説明頼む。
107 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:27:41.35 ID:Ph34uzkO.net] >>101 https://github.com/dotnet/csharplang/blob/master/proposals/nullable-reference-types.md
108 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:33:56.97 ID:LMlAaHk/.net] https://gist.github.com/olmobrutall/31d2abafe0b21b017d56 これだろ string?じゃなくて、nullを許容しないstring!を導入したらどうか?という話 stringをstring!に変換しようとしたときにコンパイラがnullチェックを入れればいいだけだから悪くないアイデアだとと思う
109 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:49:06.30 ID:UZ2qE6DF.net] >>101 よく知らんけど、DateTimeとかDB側でNULL許容として扱われている値型を同等に扱うためじゃないのかね じゃないとEFとか破綻しそう
110 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:52:36.71 ID:yWN+qtCg.net] >>104 .Net1.0から実装されていて欲しかったけどな つかDataSetっていうウンコがあったからNULL許容型の生まれが遅くなった可能性があるな
111 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:53:40.67 ID:LMlAaHk/.net] >>104 そうじゃなくて逆にnon-nullableが欲しいというのが趣旨だよ で102で紹介されてるstring?の案は「いっそ参照型もデフォルトでnull非許容にしようぜ」という超過激なトンデモ案
112 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 18:57:42.54 ID:HT5KxiNP.net] 是非そうすべきだ
113 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:06:32.73 ID:X2XHKUCb.net] TypeScriptがそういう風に仕様変更されたけどさすがにC#には不可能でしょ TypeScriptとは違って過去の資産があるし書捨てプロジェクトばかりじゃないんだから やるならstring!しかないけど!だらけでソースが見苦しくなるのが難点だな
114 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:11:34.18 ID:J4QCEXrr.net] https://www.infoq.com/jp/news/2017/04/CSharp-Nullable 近いうちに実現するっぽいよね こういうところがC#って凄い。
115 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:13:26.09 ID:HT5KxiNP.net] いつまでもVBを引きずって瞑想していたMicrosoftとは思えないな ヘジたんは偉大だ
116 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:19:42.67 ID:QProx2es.net] >>96 ありがとうございました。 単純に理解不足で参照側に?をつけていないだけでした。
117 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:23:28.74 ID:SHq3YOvL.net] またnullの話w null非許容が欲しいなんて問題の原因を取り違えているだけであって、 そんなもの導入してもnull例外が初期化忘れに置き換わるだけだっていう 簡単な事実が分からんアホが多すぎで呆れるよ
118 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:25:29.82 ID:5hEoQuZK.net] >>103 ありがとう。 逆なら納得だわ。
119 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 19:27:51.33 ID:5hEoQuZK.net] >>112 そこまで単純化されたら大助かり。
120 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:14:30.69 ID:AM37HZZ1.net] >>112 何言ってるのかわからん 初期化忘れって何よ
121 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:31:14.27 ID:HT5KxiNP.net] またJavaに大きな差を付けてしまうな あとはエコシステムも充実させてくれ
122 名前:デフォルトの名無しさん mailto:sage [2017/05/23(火) 20:57:28.99 ID:Swob9G4V.net] >>112 null結合演算子も超嫌ってたしね〜君