C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/22(土) 15:36:53.26ID:S+KK7a41
■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が建てる事
建てられない場合は他を指定する事。
2017/05/26(金) 13:10:14.69ID:V0QADimW
c#でポインタが使えれば俺はc++はもういらない。
222デフォルトの名無しさん
垢版 |
2017/05/26(金) 17:16:27.99ID:Vk2AXjGC
メモリ管理はRustのゼロコストGC(正確にはGCじゃないけど)に期待してる

>>221
っunsafe
2017/05/26(金) 18:58:46.42ID:4GVMWdle
>>221
使えるよ
2017/05/26(金) 19:35:43.26ID:R9lW8EDm
パフォーマンスを上げるのに
new するときにどの世代のメモりに生成するか指定できると便利になりそうな気がする
明らかに長期生存が分かっているオブジェクトを若いからというだけでガベコレに晒すのは無駄なんだが、現状無差別でしか生成できない。
アプリケーション終了時点まで消えてなくなることが無いと分かっているオブジェクトに至っては、生成直後に管理から外してもらえると良いんだけど。
2017/05/26(金) 19:47:07.58ID:R9lW8EDm
>>219
天国だよ
特にラムダ式とかローカル関数では、コピーとキャプチャを区別しなくてよくなる。
というかキャプチャとか考えたやつ、もうちょっとマシな方法思いつかんかったんかよって思う。
どのスコープの物なのか判りにくくてバグの温床
C++みたいに、キャプチャかコピーか明示できるようにして欲しかった。
2017/05/26(金) 20:08:39.93ID:bEaQUHBT
キャプチャーがそんなに分かりづらいとは思わんけどな
2017/05/26(金) 20:11:40.53ID:R9lW8EDm
>>226
もしそうだったら、何時ぞのバージョンアップの準破壊的変更で
foreach(var item in xxx) のitemのスコープを変えたりとか苦しい羽目にはならなかったろうよw
2017/05/26(金) 20:15:07.40ID:bEaQUHBT
>>227
それキャプチャーの問題じゃないでしょ
ループ変数のスコープの問題
2017/05/26(金) 20:16:06.09ID:R9lW8EDm
>>228
何言ってんだよ、キャプチャがなければ何の問題もない話だろw
2017/05/26(金) 20:16:55.50ID:bEaQUHBT
よく分からん思考回路だな...
2017/05/26(金) 20:18:42.55ID:R9lW8EDm
>>230
お前が、トラブルにあったことが無い程度にしかプログラムしていない初心者だからだよw
2017/05/26(金) 20:21:16.22ID:bEaQUHBT
言っても無駄だと思うけど、だからそれはキャプチャーの仕様が
トリッキーでミスリーディングだから起こる問題じゃありません。

foreachのループ変数のスコープがプログラマの予想を裏切るものだから起こる問題です
2017/05/26(金) 20:33:16.54ID:R9lW8EDm
結局、C#のEqualsやキャプチャとかが分かりにくくなってしまったのは
利用者から見て隠すべきでない物を隠してしまった所にあるんだろうな

operator == のオーバーロードも、C++ならポインタと実態の違いをプログラマが
. と -> の違いとしてしっかり認識しながらプログラムしている。問題なんか見たことない。
だから、C++のプログラムをしていた自分はJava屋が指摘する == のオーバーロードの危険性について
そんなの気にしすぎと軽視していたんだよな、ところが実際にはヤバかった。

C++プログラマは、ポインタとして利用しているオブジェクトには、ポインタらしい == のオーバーロードを
実体に対しての == は、実体を比較する為のオーバーロードをいつも意識している。
C#は、参照(意味的にはポインタ)を、実体の比較としてオーバーロードしようとしてしまう。意識していないからね。
このあたりが齟齬の発生地点のような気がする。
というかC#はじめて、やらかした。
どころか、標準の string からしてやらかしている。

C++では、ラムダ式でもしっかりと意識したコードができるようになっている。
次の問題は async /await だ、あれも隠してはいけない物の代表格、バグの温床だね。
C#の設計陣、そろそろ学習しろよって思うのであるがw
2017/05/26(金) 20:51:46.15ID:bEaQUHBT
ああ、昨日の人か

==のオーバーロードが危険とはまったく思わないし、等号という記号のイメージに
そった定義で可能なことは自然で当然のこと

問題があるとすれば、むしろオーバーロードしなくても使えてしまうことだろう。
昨日も書いたけど、VBのようにオーバーロードしないと使えない仕様の方が好ましかった
2017/05/26(金) 21:36:33.37ID:Ym5et5f0
マップキーに使える値型は==を上書きする
それ以外はデフォルトのまま参照の比較
これで困ったことはないな
強いていうなら決まり切った形式の実装がめんどくさいことか
2017/05/27(土) 20:08:35.61ID:CUGuWQ0O
そういや空の自作構造体をhashset辺りに入れるとどうなるの?
2017/05/27(土) 20:26:33.27ID:TYkkRdMw
>>236
.netのソース見るとnon-staticなフィールドのない値型のインスタンスは全部等価になるっぽい
試してないけど
2017/05/27(土) 21:21:07.48ID:CUGuWQ0O
そうなんだ。比較時に例外飛ばすと思ってたよ。
2017/05/27(土) 21:22:20.09ID:6qDXI5sJ
質問する前に試せよ
2017/05/27(土) 22:01:52.68ID:pNqYSKN5
structの既定の比較は、かなり複雑な事やってる。
ポインターとか環境によって可変するフィールドや、アライメント関連で構造体中に隙間が無い場合に限ってmemcmpで高速比較する。
それ以外は、リフレクション使っての比較なのでパフォーマンスが大幅に落ちる。
なので、原則オーバーライドして使えという事を、昔C#が出始めたころにMSが言っていた。

自分は、いいかげん面倒くさいので、自分用は式ツリー使って比較とハッシュ計算の関数を自動生成してコンパイルした上で使っている。
既定の比較もこういうのを標準で作ってくれると面倒が無いし間違いもないんだが、などと思っている。
比較したいフィールドもしくはプロパティーに[EqualsTarget]というアトリビュートを付けたら、それで自動生成される感じ。
大小比較もこれで実装されるようにしてやった。

公開して、全員に使ってもらおうかどうか思案中、ちょと変態コードすぎるので気が引けてる。
2017/05/27(土) 22:27:07.42ID:9Ba3g3h0
初心者が頑張ってる感があって微笑ましい
2017/05/28(日) 00:28:08.62ID:v+RO0IME
スレチ感があるけど該当スレが分からずここで聞くんですが
Windows Formで背景色って灰色が初期値なのって何故でしょうか
2017/05/28(日) 00:31:20.09ID:X8MhB+Ic
Windowsを作ったマイクロソフトに聞け
2017/05/28(日) 02:09:41.98ID:0Vke4+SI
>>242
それ本来はOSの設定で変更可能なはずなんだけど。Win8以降コンパネで設定できなくなってるから
何だか訳分からんことになってるね

しかし、今触ってみて改めて思ったけどWin10のUIはウンコだな
Win7の時代の方がよほど分かりやすかった
誰が考えたらこんなカオスで使いづらいUIになるんだ
2017/05/28(日) 08:42:44.56ID:Q4IaIxAm
つか、元のコンセプトから見れば、灰色じゃなくて銀色のはずなんだけど
どう見てもねずみ色だね
2017/05/28(日) 10:16:19.73ID:LDH8CI3x
なぜグレーかというと、ハイライトと陰でウィジットを立体っぽく表現できたから。
だからフラットデザインではグレーにすり必然性はない。
2017/05/28(日) 10:30:30.28ID:BVKFrymy
開発用端末はMac、サーバーはLinux
最近はWindowsの出る幕がない
2017/05/28(日) 11:35:19.99ID:WRDHmffy
俺も最近は職場のPCでも開発はほとんどVirtalBox上のLinuxでスクリプト書いてる
たまにVS立ち上げる機会があるとクソ使いやすくて感動するけど、VS以外のWindowsは大嫌い
2017/05/28(日) 11:41:23.39ID:7TA+N736
>>248
VS でスクリプト書けばいいだけじゃん
250デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:42:49.19ID:U0KxOEQh
VSをLinuxやMac向けに売れば絶対儲かるやろ
for MacとかじゃなくてWin版と同じように使える奴
2017/05/28(日) 13:54:11.57ID:V1TJzJdZ
XCodeで心穏やかにプログラムを書ける奴を尊敬する
よほど精神修養したんだろうな
2017/05/28(日) 13:55:34.04ID:X8MhB+Ic
ユーザー数が
Win >>>> 越えられない壁 >>>> Mac
だから採算が取れる見込みが無けりゃ作らないよ
2017/05/28(日) 14:34:28.04ID:7TA+N736
そもそも VS で儲けるとか w
254デフォルトの名無しさん
垢版 |
2017/05/28(日) 15:17:54.35ID:U0KxOEQh
>>252
開発者は
Mac>>>>>越えられない壁>>>>>Win
だろ
2017/05/28(日) 15:22:27.08ID:w6vv9NyD
>>254
vs for macで何か不満でも?
2017/05/28(日) 15:26:48.07ID:Q4IaIxAm
>>254
それはない
大企業の開発環境がMacとかあり得ん
2017/05/28(日) 15:27:43.83ID:X8MhB+Ic
>>254
もうちょっと現実見ようぜ
2017/05/28(日) 15:44:53.94ID:BVKFrymy
現実見た結果Macにたどり着いた
まあ三流企業は永久に窓でも使ってろってこった
2017/05/28(日) 15:46:59.96ID:V1TJzJdZ
winでもmacでも*nixでもストレスしか溜まらん
開発者向けの天国OS欲しいわ
2017/05/28(日) 15:58:51.29ID:Q4IaIxAm
三流企業というか弱小企業はMac使うんだろう
2017/05/28(日) 16:01:38.86ID:BVKFrymy
>>260
弱小企業は金がないから窓使うしかない
かわいそう
2017/05/28(日) 16:03:22.88ID:Q4IaIxAm
でかいビル丸ごと一棟開発の部署でほぼ全部windowsマシーンとか見たことないんだろう
2017/05/28(日) 16:05:30.06ID:lvl9gPaw
>>261
で、なんでお前みたいなカスがここにいるんだ?
2017/05/28(日) 16:08:15.24ID:Q4IaIxAm
国内でmacが1000台稼働してますなんてオフィス見たことも聞いたこともない
2017/05/28(日) 16:08:20.73ID:BVKFrymy
コスパならLinux
快適さならMac
思考停止するならWindows
2017/05/28(日) 16:08:28.50ID:LqX4nhhl
>>262
その光景に寒気を覚えない奴は実務未経験だろうな
2017/05/28(日) 16:34:01.56ID:5PeSitGp
visual studioとc#が最強すぎるから今はwindowsが一番いい
2017/05/28(日) 16:45:27.79ID:V1TJzJdZ
一番最低の開発環境はWin+Cygwin
仕事を辞める理由に値する
2017/05/28(日) 17:28:00.00ID:DdUksNjB
スポーツでもそうらしいけど、デキない奴ほど道具にこだわるのって
なんか日本人の伝統芸みたいだねw

あとこれはたぶんIT系だけだと思うけど「〜使ってる俺すげえ」っていう
よくわからん自己陶酔に浸る奴は相変わらず多いね。
自己陶酔は自己不安の裏返しだって気づかない時点で程度が知れるけど
2017/05/28(日) 17:33:05.05ID:BVKFrymy
こだわるとか凄えってほどのものじゃないだろう
当たり前のように一通り使って見て
当たり前の感覚であぁ窓よりMacの方が使いやすいなぁって感じる
ただそれだけのことなんだよね
鉛筆よりシャーペンの方が良いなぁって感じに似てる
2017/05/28(日) 17:39:13.08ID:LDH8CI3x
「こんなに素晴らしい○○を使っている私は特別な存在なのだと感じました」

「○○は優れている」ってのが「優れている○○を使ってる俺は優れている」に転化しちゃってる奴は多いね。
IT系に限らず趣味の世界一般で多いけど。
そんでそれがdisられると、まるで自分がけなされたかのようにムキになる。
2017/05/28(日) 17:58:58.49ID:BVKFrymy
そうはいっても業務で筆を使ってる人が居たらペン使えよって内心でバカにするだろ?
そういうこと
273デフォルトの名無しさん
垢版 |
2017/05/28(日) 18:04:29.24ID:U0KxOEQh
Winでいいって言ってる奴はRoR使った事ないだろ
2017/05/28(日) 18:06:50.38ID:6nsRn/wD
C#のスレでMacで開発とかナニカの病気か
275デフォルトの名無しさん
垢版 |
2017/05/28(日) 18:08:24.27ID:U0KxOEQh
あ、ここC#スレだったわ
すまん、スレ勘違いしてた
2017/05/28(日) 18:29:20.56ID:BVKFrymy
>>274
なん年前の話だ?
2017/05/28(日) 18:50:35.39ID:7TA+N736
>>272
筆を使って業務に支障がないなら別に文句はない
評価は仕事ができるかかどうかでペンを使うかどうかじゃない
2017/05/28(日) 19:45:38.03ID:V1TJzJdZ
ジャップは奴隷らしくしたかどうかだろ
2017/05/28(日) 20:18:29.52ID:w6vv9NyD
>>274
いつの話をしているんだ
2017/05/28(日) 20:25:47.96ID:Q4IaIxAm
macで開発を主張してるのは各種OSSが簡単に導入できるからだろ
それがc#と何の関係があるのかはしらん

ちゃんと管理された大企業のPCに勝手にOSS入れることは難しい
2017/05/28(日) 20:28:31.76ID:w6vv9NyD
>>280
開発機と事務用PCの違いってわかるかい?
2017/05/28(日) 20:35:51.83ID:LqX4nhhl
一山いくらのPGなんてそんなもんよ
コード生産ライン作業員に自由なんてない
2017/05/28(日) 20:36:36.03ID:BVKFrymy
管理がしっかりしてる企業の方がリスクリターンを解ってるから導入は簡単
OSSは不安とか杓子定規にフリーはダメな三流企業は難しい
2017/05/28(日) 21:15:15.54ID:zksDCbHE
OSSダメ言い出したらLAMPすら無理じゃん

.NETだってオープンソースになってLinuxやMacに移植されてんのに

企業が管理してるのとか実績があるのだったら良いのか?
2017/05/28(日) 21:32:38.97ID:LL3KimrN
.net compact framework(C#2.0?)で知識止まってるんだけど久々にザマリン使って泥アプリでも作りたい
動くだけならできるんだろうけどlinqとかlambdaとか学びながらやりたいんだが
本とかサイトでいいとこ教えてくれ
C++,PHP,ruby,Javascriptはまー普通に書けるレベル
2017/05/28(日) 21:39:52.49ID:caiumps+
>>270
WindowsとMac、両方並行して使ってるけどそこまで致命的な差は感じないなぁ
バージョン管理、統合開発環境、エディタ、パッケージマネージャがマルチプラットフォームで動くようになったのはでかなり楽になった
RubyはまだWindows冷遇は強いので悲しいけど。

OS自体としてもデフォルトでも使いやすいのはMacだけど、カスタマイズしていくと差が埋まってく
人によるだろうけど、カスタマイズ好きとしてはどうせMacもLinuxもWinもカスタマイズするので大差なかった
2017/05/28(日) 21:40:14.17ID:w6vv9NyD
>>284
PowerShellもMSBuildもRoslynもダメなのかねwww
2017/05/29(月) 14:34:44.41ID:KWmGTlOy
誰もそういう事は言ってないだろ
馬鹿じゃないの?

会社のPCに社員が勝手にソフト入れんなってことだろ
2017/05/29(月) 14:39:23.18ID:8LL+C/ec
>>288
馬鹿じゃないの?
2017/05/29(月) 15:01:35.47ID:m+ZaFeLx
ここまで馬鹿しかいねーだろ
2017/05/29(月) 18:35:09.12ID:2NVblJjK
この手の話題は俺社環だからマ板でやれと言われているのに何この無限ループ
2017/05/29(月) 19:41:47.70ID:Vo8bGTzE
ループ以外のレスをしないでください
2017/05/30(火) 04:00:45.22ID:5LsaYMbU
>>286
LINQはってのは使えば解るレベルの簡単さだから大丈夫
たまに毛嫌いする困ったちゃんがいるけど
294デフォルトの名無しさん
垢版 |
2017/05/31(水) 19:30:52.46ID:EmdHwMni
varの話ししてもいいですか?
295デフォルトの名無しさん
垢版 |
2017/05/31(水) 19:33:05.55ID:buo/Bij8
ダメです
2017/05/31(水) 22:00:36.87ID:yWFnW1e8
使う言語ころころ変えてたらメンテ大変そう
2017/06/01(木) 00:53:00.46ID:5sVH+pSJ
馬鹿そう
2017/06/04(日) 09:05:27.27ID:tYPOnRtn
FormにwebBrowserコントロールを置いて、
WEBページを拡大や縮小して表示する方法がありますか?
2017/06/04(日) 09:48:20.53ID:G9mRH0ZP
oleコマンド遅れ
2017/06/09(金) 09:59:55.43ID:6Ut3jWEP
FormなんかやめてElectronにすれば解決
2017/06/09(金) 20:38:16.81ID:k+3fMdQf
スレチ
2017/06/11(日) 11:11:25.29ID:KfYxBEuE
REST APIが一般化したせいで様々な環境と言語をメンテする機会が増えた
2017/06/11(日) 14:21:33.09ID:abflG9dt
ソースを貰ってみると
(これどの辺がRESTなん…? RESTいいたかっただけやろ…)
と思うことも多々あり
2017/06/11(日) 14:29:59.13ID:fRXzYWPt
休みたいっていう願望の現れよ
2017/06/11(日) 17:24:44.36ID:Tsek5cQ7
IN PEACE
2017/06/12(月) 11:51:52.59ID:K7TPIBhO
>>302
どの言語+フレームワークが一番よかったですか?
2017/06/14(水) 23:05:30.95ID:5jDCrHnG
ConfigureAwaitのデフォルトをtrueにしたのって大失敗だろ
書くのめんどくせえよ
2017/06/15(木) 19:38:22.96ID:yyYf8riA
>>307
trueにしないと死屍累々だったと思うが
2017/06/15(木) 20:45:29.51ID:uOk0laYQ
おじさんは太川陽介を連想しました
2017/06/15(木) 21:40:50.91ID:OeRxoTJT
まあどっちを既定にしても文句は出るところだと思うけど
await/co_awaitみたいにキーワードで指定できりゃ良かったんじゃは思う
2017/06/15(木) 22:08:01.60ID:9G4t6eWS
ConfigureAwaitをtrueにするのはもうデスクトップアプリぐらいだろ
dotnet coreになってasp.net mvcもコンテキストへの依存がなくなったわけだし
2017/06/15(木) 22:16:14.73ID:+4RSrStZ
デスクトップアプリだけ既定がtrueになっとると思っとりました
2017/06/15(木) 22:27:30.17ID:YiDUG5yW
デフォルトfalseだと常に排他制御が必要になるだろ
わざわざコンテキストに戻すのはマルチスレッドの煩わしさを避けるためなのに
2017/06/15(木) 22:35:26.43ID:9G4t6eWS
コンテキストと排他制御は関係ないでしょ
2017/06/15(木) 22:50:32.92ID:YiDUG5yW
>>314
あるよ
一部awaitしない呼び出しがあったりすると、後続処理がスレッドプールで実行されてしまうと見かけ上同一コンテキストのように見えるコードでも
同時に複数のコードが並列で実行されてしまう可能性がある(というか確実にそうなる)
2017/06/15(木) 23:10:58.71ID:9G4t6eWS
awaitすればいいじゃん
それってasync/awaitの世界では前提でしょ
2017/06/15(木) 23:14:08.29ID:YiDUG5yW
だったらtrueでもWaitしなけりゃ問題ないじゃん
排他制御が必要になるケースももちろんだけど、そもそもawaitの前後で常にスレッドが変わること自体がプロブレマティックすぎる
そんなのに比べたらUIスレッドでWaitする馬鹿のリスクなんて全く取るに足りないレベルだ
coreはWeb用ということで想定される要件が技術的に単純だから許されるんであって、さすがにそれを全ての用途に適用するのは無理がある
2017/06/15(木) 23:18:14.91ID:pnr+bbz5
>>317
>coreはWeb用
ソースよろ
2017/06/15(木) 23:21:24.69ID:YiDUG5yW
>>318
https://www.microsoft.com/net/core/platform
>.NET Core is a blazing fast, lightweight and modular platform for creating web applications and services that run on Windows, Linux and Mac.
2017/06/15(木) 23:22:43.99ID:uOk0laYQ
http://qwerty2501.hatenablog.com/entry/2014/04/24/235849

ここに書かれてるような問題があるからデフォはfalseが良かったって言いたいなら
俺も羹に懲りて膾を吹いてるようにしか思えんね
2017/06/15(木) 23:25:02.21ID:pnr+bbz5
>>319
完全にMicrosoftのミスリーディングやなこれは
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況