- 1 名前:デフォルトの名無しさん mailto:sage [2020/05/27(水) 20:28:41.27 ID:Pggemlyq0.net]
- !extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part147 mevius.5ch.net/test/read.cgi/tech/1582100741/ ■関連スレ C#, C♯, C#相談室 Part94 mevius.5ch.net/test/read.cgi/tech/1553075856/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index https://docs.microsoft.com/en-us/dotnet/standard/class-libraries referencesource.microsoft.com/ ・Insider.NET > .NET TIPS - @IT https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html ・DOBON.NET .NET Tips https://dobon.net/vb/dotnet/index.html VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 820 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 21:11:19.50 ID:X4ikUZ5gM.net]
- いい加減なのは知識じゃなくて遺伝子じゃねえのか
欠陥品なんだから
- 821 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 21:11:29.21 ID:a85534SW0.net]
- 少し調べてみたけどMISRAがsingle returnを推奨する根拠に上げてるIEC 61508には
”subprograms should have a single entry and a single exit only;”と書かれているだけ そこに参考文献としてヨードン/コンスタンティンの「ソフトウェアの構造化設計法」を上げてるが ヨードンやダイクストラが提唱したsingle exitは時代的にも意味が違うのでルール自体の根拠が薄い https://softwareengineering.stackexchange.com/questions/118703/ 1993年出版のCode Completeでも今回のようなケースはmultiple returnが推奨されてるくらいなので single returnはリソースクリーンアップが必要だけど 他の方法がどうしても取れないような特殊なケースでしか意味がないと思って良さそう
- 822 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 21:15:38.40 ID:tnWbc17e0.net]
- どうでもよくねw
- 823 名前:796 mailto:sage [2020/11/30(月) 21:56:17.24 ID:r8rQ87Qr0.net]
- Cプログラミングの落とし穴
C Traps and Pitfalls, Andrew Koenig, 1989 ここから、Lint, MISRA-C などが出来た
- 824 名前:デフォルトの名無しさん mailto:sage [2020/11/30(月) 22:27:10.33 ID:n5+DCEBK0.net]
- c#スレなんですがそれは
- 825 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 11:25:23.55 ID:ZwYRJuoF0.net]
- C#とはC++++、つまりCとC++を継承した言語である
よってC#スレにおいてCとC++は範囲内 悔しかったら言語名を変えることだな
- 826 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 11:27:04.96 ID:vLuBExG+d.net]
- キチガイ
- 827 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 11:45:19.44 ID:K5BMxGNOM.net]
- 似た話でelseを省略するな派もたまにいるけど、元はCOBOLの文法ではelse書かないとブロックの区切りが分かりにくいかららしいね
- 828 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 12:14:20.95 ID:k3h/30i7a.net]
- そんな流派の人に会ったことないけど、意図はたぶん古典的なぶら下がり問題対策だろうね
俺はこんなミスしたことないしIDEの時代には杞憂だと思うけど if (true) if (false) {} else Console.WriteLine("来ないはず");
- 829 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 14:56:29.62 ID:6hEFZljjM.net]
- elseを省略しちゃダメって言うのは俺も見たことないな
>>818みたいなのを避けるために { } を省略しちゃダメって言うのは見かけるけど
- 830 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 00:57:12.14 ID:+AssLSaA0.net]
- 最近久しぶりに起動したらVSのテキストエディタの「自動メンバー表示」の項目ををカーソルキーで動かすのがとんでもなく重いんだけど俺環?
- 831 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 01:47:00.65 ID:HjUyDubp0.net]
- Dispose()しないといけない条件がいまいち分からないんですが、
コンポジションとして参照を保持しているメンバーがDispose()メソッドを持ってたら、Dispose()を実装しないといけない、ていう理解でいいんでしょうか?
- 832 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 10:14:54.41 ID:ebqkblVHH.net]
- >>821
たとえばファイルを開いて中身を書き換える処理をFileStreamでするじゃん 開いてる間は他の人やプログラムがそのファイルを使えない状況になるから 使い終わったらちゃんとDisposeで閉じましょうねって事
- 833 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 12:15:24.35 ID:q6qthHEM0.net]
- 画像とかメモリ消費量が多いオブジェクトに対して、使い終わったらちゃんとDisposeで破棄しましょうねって事
- 834 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 12:32:26.40 ID:/5AdVnEZ0.net]
- >>821
基本はYes 内部でそのメンバをDisposeする仕組みが他にあるなら別に実装しなくても良いが、とは言えIDisposableを実装しておけばそのラップクラスでもusingステートメント使えるから分かりやすいしね IDisposableはコードでDisposeせずともGCによる破棄タイミングでDisposeしてくれるから最悪し忘れても大丈夫だが(GCによるオートDisposeはパフォーマンスが悪いので出来れば避けるべきだが)
- 835 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 12:51:23.41 ID:VuN4nxV5M.net]
- >>821
そうとは限らない たとえば外部のAPIを使っていて、使い終わったら必ずある処理を最後に呼ばなければならないという決まりがある場合 たとえばある一連の処理の間は一時ファイルを作り、最後に消す必要がある場合 そういったユースケースをクラスにするならDisposeを実装することになるだろうな Disposeってのはつまり、最後に特定の処理を必ず呼ばなければならないという規約に他ならない
- 836 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 18:14:26.77 ID:w77bbFvMa.net]
- >>821
エンジニアは教条主義的に考えてはいけない。 何も難しくない。 オブジェクトが自分のメンバー(フィールドかプロパティ)のDisposeを呼ぶべきタイミングを 自分で判断できるならわざわざDisposeを実装して他人にそれを任せる必要はない。 できないならDisposeを晒して他人にお願いする。 それだけでしょ。 でも「Disposeを呼ぶべきタイミングを自分で判断できる」のはメソッド呼び出しが 完了した後も別のスレッドで動作を続けるタイプのオブジェクトだけなので そうは多くないはずだよね。
- 837 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 19:47:17.83 ID:o81q9kO+D.net]
- >>1
> なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#, C♯, C#相談室 Part94 mevius.5ch.net/test/read.cgi/tech/1553075856/ ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net https://mevius.5ch.net/test/read.cgi/tech/1469538912/ テンプレも読めない奴らがする議論は、 もはや議論ではなくマウンティング合戦
- 838 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 20:41:49.29 ID:w77bbFvMa.net]
- >>827
君がやってるのもそのマウンティング合戦のうちなのは自覚して欲しいよねw もはや5ch全体がそうだけど特にここは過疎スレなわけで、そんな目くじら立てることないと思うよ 誰か困る奴いるの?w 誰もいないって。
- 839 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 21:21:31.32 ID:hwkqsjy70.net]
- 過疎スレでもルールは守れよ
- 840 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 21:58:13.02 ID:4huF2MSH0.net]
- マウンティング合戦なんか起こってたら
初心者が尻込みして書き込むのをやめてしまったりするわな
- 841 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 00:08:24.38 ID:AfLSjnCy0.net]
- winformでwebview2を使ってるんですけどcookieをセットする方法がわからなくて困ってます
どなたかわかる方教えて下さい
- 842 名前:820 mailto:sage [2020/12/03(木) 02:05:41.69 ID:plL1xX/c0.net]
- みなさんありがとうございます。
そして何かすみませんでした。
- 843 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 06:58:36.35 ID:HwhU8QlY0.net]
- >>832
絶対に許さねぇからな 末代まで祝ってやるから覚悟しろよ
- 844 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 07:07:12.64 ID:UmUyqAch0.net]
- 今更訊きづらいけどgoto文のラベルの命名ルールって
goto maki; hirohisa: System.Console.WriteLine("誰だよ"); goto hell; maki: System.Console.WriteLine("知ってる"); goto hirohisa; hell: System.Console.WriteLine("そうだな"); こんなんでいいの?
- 845 名前:デフォルトの名無しさん [2020/12/03(木) 09:22:44.20 ID:Mqqeu2dm0.net]
- >>831
webView2.CoreWebView2.CookieManagerはどう?
- 846 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 16:26:09.15 ID:UmUyqAch0.net]
- webview2とCEFSharpのどっちがいいのか
- 847 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 01:59:10.27 ID:/XRPGQMq0.net]
- IDisposable obj = otherObj;
using(obj){ obj = anotherObj; }
- 848 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 03:16:37.86 ID:yDsXPkFS0.net]
- >>837
これビルド通るの? >オブジェクトは、using ブロック内では読み取り専用です。変更したり再割り当てしたりすることはできません。
- 849 名前:デフォルトの名無しさん [2020/12/04(金) 16:12:00.25 ID:ZsgfFad40.net]
- nugetからインストールしたライブラリですが
別のパソコンから同じプロジェクトを開けるとusing句がエラーになってしまい ライブラリを一度アンインストール→インストールし直さなくてはなりません 複数のパソコンで同一プロジェクトを編集するときnugetは使えないのでしょうか
- 850 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:16:23.76 ID:0hbyHhKrd.net]
- nugetの修復みたいなことすれば足りないもの探して再DLしてくれるよ
- 851 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:31:08.42 ID:e5C89TYX0.net]
- ”別のパソコンから”ってもしかしてネットワーク共有して直接開いてるの?
- 852 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:55:03.48 ID:ot5BaqCCa.net]
- >>839
COMじゃないならライブラリのアセンブリをプロジェクトのフォルダ内に置いて それを参照すれば一応できるんじゃないの? やったことないから知らんけど
- 853 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 16:55:13.19 ID:edWfS5jb0.net]
- >>839
nugetのライブラリって各PCっていうかVS毎に管理しているから、ソースを別の場所に 持っていったらその環境で指定されているライブラリを拾わないとダメなんじゃ なかったっけ? >>840が言ってるみたいなことがnugetの管理ツールだかメニューにあったような
- 854 名前:デフォルトの名無しさん [2020/12/04(金) 17:04:36.37 ID:ZLeuk8KN0.net]
- >>839
チキンマックナゲットは セールのときは5個入り200円だから そのときに買うのがベストだと思うよ。
- 855 名前:デフォルトの名無しさん [2020/12/04(金) 17:05:31.23 ID:ZLeuk8KN0.net]
- ソースは必ずバーベキューを。
バーベキュー以外は糞まずくハズレ。
- 856 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 17:25:30.91 ID:0hbyHhKrd.net]
- CIでビルドするとき、確実にnugetの修復が必要になるから構築したことあるならわかるはず
コマンドラインからnugetにsln渡してやればDLしてくれる つうかオンラインからいつでも好きなversionを落としてこれるのがnuget等ライブラリ管理ソフトの強みなんだからプロジェクト内にファイルなんて置いたらメリットが減る 外部ライブラリを編集しないのにバージョン管理下においてプロジェクトを肥大化させる意味がない
- 857 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 17:50:19.19 ID:EWRKs4L00.net]
- Nugetってmpnと比べて
なんでなんなにトラブルの?
- 858 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 17:56:44.09 ID:vwTMj3ZS0.net]
- mpn…なんな…?
- 859 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 18:37:31.14 ID:4RJVpdFOr.net]
- わりっ!
- 860 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 18:50:13.35 ID:V5csDP6P0.net]
- dotnet restoreすればいいけどdotnet buildとかやれば勝手にやってくれる
- 861 名前:デフォルトの名無しさん mailto:sage [2020/12/04(金) 18:57:48.00 ID:L60rBM570.net]
- >>838
適当なクラスに置き換え
- 862 名前:スらビルドできますよ。 []
- [ここ壊れてます]
- 863 名前:デフォルトの名無しさん [2020/12/04(金) 22:05:08.94 ID:9AUT9QCq0.net]
- 新潟から週2回東京に出勤、サイボウズの複業採用社員に聞く複業ライフのリアル。
https://www.businessinsider.jp/post-166126 兼業でフリーライター、サイボウズ社員・明石悠佳に学ぶパラレルワーク術 https://www.wwdjapan.com/articles/752575 「複業を解禁しなければ人も企業も成長しない」複業全面OKのサイボウズ社長と実践社員の本音対談 https://www.businessinsider.jp/post-33893 育休は最長6年、副業もOK! サイボウズはなぜ「100人100通りの人事制度」を作ったのか https://logmi.jp/business/articles/50252 超異例「週休4日制」の導入をSMBC日興証券社長が決めた理由 https://diamond.jp/articles/-/223832 週休3日制をさらに進めた週休4日制 https://www.k-society.com/recruit/why-four-days-off-a-week/ 採用情報(週休3日制を超えた週休4日制の正社員求人 | 副業OK https://www.k-society.com/recruit/ 2020年4月より「週休3日制」を導入。テックカンパニー化に向け、好循環を生み出すエンジニアリング組織へ https://prtimes.jp/main/html/rd/p/000000096.000016431.html
- 864 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 09:07:58.88 ID:7mh3qGhb0.net]
- ライブラリの話ですみません
SevenZipSharpにてSolid圧縮ファイルを[STAThread](FormやWPFのメインスレッド)にてExtractArchiveするとフリーズしてしまうのは私だけでしょうか? 別スレッドやTask化したり、そもそもSTAThreadが使われないConsoleアプリでは同期でも全く正常にSolid圧縮も解凍されるのですが
- 865 名前:デフォルトの名無しさん [2020/12/05(土) 10:37:20.60 ID:kSej4vti0.net]
- List<List<List<int>>>→List<List<int>>
List<List<int>>→List<int> にする方法ってLINQでは不可能ですか? 並び順は変えないとします。 for使うしかないですか?
- 866 名前:デフォルトの名無しさん [2020/12/05(土) 10:38:07.01 ID:kSej4vti0.net]
- 後者が
{1,2,4}{3,9,8}→1,2,4,3,9,8って感じ
- 867 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:00:35.05 ID:DXfBmITDd.net]
- >>854
var result = iList.SelectMany( i => i )
- 868 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:12:57.38 ID:+y18mv1b0.net]
- ぐぐればすぐ見つかるわよ
- 869 名前:デフォルトの名無しさん [2020/12/05(土) 11:31:13.29 ID:CCPlFK06M.net]
- >>857
なぐるわよ
- 870 名前:デフォルトの名無しさん [2020/12/05(土) 11:42:56.05 ID:kSej4vti0.net]
- >>856
順番変わりますか?
- 871 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:52:38.53 ID:qYbtudQ20.net]
- TOARRAYのADDRANGEだよさっさとしろよグズ
- 872 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:31:48.70 ID:fwzFFaeU0.net]
- >>859
多分変わらないけど、やってみて。
- 873 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:39:27.19 ID:qL2nBB2w0.net]
- >>853
それは本来1秒とかで終わるはずがいつまで経っても終わらないってこと? まあUIスレッドでやることじゃないからTask使ってればいいよ
- 874 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 13:26:31.39 ID:UBJq3HVh0.net]
- nlogで入れた.configが読み専になったから、しょうがなくありものを先に置いといてnugetしなおしたらなんとかなった
- 875 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 14:02:33.08 ID:cSIoQ91v0.net]
- >>859
仮に駄目なら自分で拡張メソッド書けばいいだけだよ 数分で書ける程度のもの
- 876 名前:デフォルトの名無しさん [2020/12/05(土) 15:30:56.23 ID:OcFAL7DuM.net]
- 手元では大丈夫でもリリースした先でダメでした、というオチがたのしそう
- 877 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:13:12.99 ID:a+vxG21/r.net]
- c#9.0でガラッと変わるので皆さん頑張ってお勉強してください
- 878 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:18:38.00 ID:a+vxG21/r.net]
- C#の思想が塗り替えられています
- 879 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:20:10.96 ID:xxrxxdsn0.net]
- たとえば?
- 880 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 10:26:12.41 ID:a+vxG21/r.net]
- recordです
他の言語から輸入した超便利機能です
- 881 名前:デフォルトの名無しさん [2020/12/06(日) 11:07:39.97 ID:GAck2gc00.net]
- recordは便利だけど勉強しなおさなきゃいけないレベルでもない
新しいこといくつか覚えればいいだけ
- 882 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:11:11.75 ID:HPmVPA7T0.net]
- expression blocksあたりが来たらC#はC#とは違う別のなにかになりそうな勢いだな
- 883 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:38:38.75 ID:q4vfNSTS0.net]
- recordって別にただのstructだろ?
比較の仕方が違うだけで
- 884 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:42:51.47 ID:bQe6lBYR0.net]
- 参照型のイコールの動作がわかんなかった
- 885 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 11:51:20.42 ID:oEu15NIyd.net]
- >>872
根本的に勘違いしてるぞお前 record はstructじゃねーよ
- 886 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 12:22:22.88 ID:3Mg1tJ4o0.net]
- >>874
KWSK
- 887 名前:デフォルトの名無しさん [2020/12/06(日) 12:41:32.76 ID:GAck2gc00.net]
- https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-9#record-types
レコード型を使用すると、変更できない参照型を .NET で簡単に作成できます。 従来、.NET 型は、参照型 (クラス型と匿名型を含む) と値型 (構造体とタプルを含む) に大別されています。
- 888 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 12:56:19.96 ID:E6YSEnmp0.net]
- つまり、リードオンリーで参照するみたいな感じか?
- 889 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:08:05.96 ID:e5/goOFG0.net]
- record自体に動的な参照型は持てない感じ?
- 890 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:08:42.54 ID:a+vxG21/r.net]
- 多分今後recordを使ってないコードを見るとイライラするようになるでしょう
今すぐにじゃなくてもそのうち確実に 古いコードは全部打ち捨てられるでしょう ただMVVM命の人には関係ないでしょう
- 891 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:13:29.20 ID:a+vxG21/r.net]
- そして普通にprivateを使わなくなる可能性もあります
C#の初期の思想が徐々に塗り替えられ捨てられていきます
- 892 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:18:25.99 ID:3Mg1tJ4o0.net]
- 既にキマイラだよなぁ
- 893 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:23:50.76 ID:a+vxG21/r.net]
- どうせrecordで既存のコード捨てられるから言語ごと最初から作り直したほうが良いかもしれない
最初から作り直せるとしたらデリゲートはなくなるのかどうか C#+F#のような言語ができたら非常に面白い
- 894 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:30:56.71 ID:e5/goOFG0.net]
- 作成後に変更できないって言ってるのに比較なんてする必要あるの?
ってのが疑問
- 895 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:37:19.87 ID:a+vxG21/r.net]
- Listから特定のインスタンス削りたい場合で位置がわからなければ比較するしかないでしょう
- 896 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:40:30.34 ID:e5/goOFG0.net]
- そういうの言語の機能使うのは俺的にNG
doubleのイコール比較は誤差入るのか?
- 897 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 14:29:36.48 ID:a+vxG21/r.net]
- Linq使うにせよなんにせよ比較は使う
初心者以下のレベルの話
- 898 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 14:57:26.26 ID:E6YSEnmp0.net]
- ん?レコードってのは何が嬉しいの?
- 899 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 15:11:34.04 ID:3Mg1tJ4o0.net]
- PASCALとかALGOLにあった奴の
先祖帰りかなぁ?
- 900 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 15:15:02.40 ID:wbXowyVSa.net]
- 亡き飼い主の声が聞こえる
- 901 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:04:31.40 ID:+WMwzRY70.net]
- 変更できない参照型って言うのはそれなりに使えるとは思うがなんでrecordなんて名前なんだ?
- 902 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:16:48.48 ID:wcxECur/M.net]
- OCaml由来
- 903 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:19:27.32 ID:oEu15NIyd.net]
- >>890
Javaがrecord を採用したから 最初はdataだった
- 904 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 16:20:25.26 ID:oEu15NIyd.net]
- >>875
structにもrecord つけられるようにする対応はC#10.0以降
- 905 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 17:02:01.60 ID:3Mg1tJ4o0.net]
- >>893
THX
- 906 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 17:09:37.16 ID:L/mxF/rBa.net]
- >>876
このスレのレスだけ見てたらそんなの何が嬉しいんだと思ったが、 なるほどそれなりに便利そう ただ、MSのドキュメントに列挙されてる - 値ベースの等価比較のためのメソッド - GetHashCode() のオーバーライド - コピー メンバーとクローン メンバー これらが自動実装されるのは確かに嬉しいが、これを実現するために何でイミュータブルにする 必要があるのかいまいちよく分からない
- 907 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 17:40:09.94 ID:R+T9okNaa.net]
- エミュー食べる必要は無いからなあ
- 908 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:18:00.03 ID:4CZ8QguV0.net]
- むしろimutableなものが欲しい、からスタートした機能
- 909 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:29:39.04 ID:ozrCEgJEd.net]
- 普通に作ってる分にはいらんわな
- 910 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:31:30.50 ID:Cw8pwO+X0.net]
- 変なところで値書き換えるやつがいるから、それを型として禁止したってだけだと思ってた
- 911 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:43:23.29 ID:e5/goOFG0.net]
- doubleの比較は何?
また、c#のウンコみたいなイプシロン使って 同値判定してんの?
- 912 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:49:40.35 ID:Cw8pwO+X0.net]
- 勘違いしてた。わざわざ書いてたいつものコードを書かなくて済むようになるのがメリットか
ところで、「record Person」の例で同姓同名の別人を区別したくなったらどうすればいいのん?
- 913 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 18:55:24.02 ID:e5/goOFG0.net]
- 大丈夫だ
それはDNAListが異なるので判別できる
- 914 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:03:18.97 ID:atqZF9NJ0.net]
- 「Effective 何々」とかによく書いてある、3種の神器だろ
Ruby なら宇宙船演算子、<=> で比較関数を再定義する。 ハッシュ関数を再定義する。 p 関数を再定義する。 こういう謎のようなインスタンスID ではなく、分かりやすい表示を再定義する class A end p a = A.new #=> #<A:0x00000000031c2f98>
- 915 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:10:34.23 ID:a+vxG21/r.net]
- recordはプロパティが基本publicになった
今まではprivateで隠蔽されていて外部から変更されなかった これはカプセル化なんだけどこれがpublicになっただけじゃ意図しない変更をされる場合がある 非常に困る だいたいのケースでは参照されても変更されなければ問題がないのでイミュータブルにするじゃねーかなと
- 916 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:16:53.81 ID:4CZ8QguV0.net]
- だから順番が逆
immutableな型が欲しい→immutableなんだからpublicでok
- 917 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:18:27.50 ID:a+vxG21/r.net]
- 世の中もイミュータブルが求められていると言うのもその通り
ValueObjectはいったん値を設定したら変えない 値を変えたくなったら新しいValueObjectをnewして挿げ替える
- 918 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:23:32.30 ID:iGfaGXq00.net]
- 別にrecord = イミューダブルじゃないからね?
- 919 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:23:45.93 ID:iGfaGXq00.net]
- イミュータブル
- 920 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 19:29:20.15 ID:a+vxG21/r.net]
- 他の簡易な言語などでもデフォルトはprivateじゃなくpublic
イミュータブルかどうかは別としてデフォがpublicが流行り
|

|