!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part159
http://mevius.5ch.net/test/read.cgi/tech/1691454079/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
https://source.dot.net/
・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
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part160
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (オイコラミネオ MM3f-idhC)
2024/02/11(日) 09:17:20.44ID:8k78Qd14M688デフォルトの名無しさん (ワッチョイ 534a-HM5l)
2024/10/30(水) 21:44:23.74ID:6hTfArrc0 あぼーんしとけ
689デフォルトの名無しさん (ワッチョイ a95f-+Yhf)
2024/10/31(木) 00:09:38.16ID:8YsyKYI60 >>687
よくわからないがお前が処方されてるからって他の人も同じだと思っているのか類友を求めているのか
よくわからないがお前が処方されてるからって他の人も同じだと思っているのか類友を求めているのか
690デフォルトの名無しさん (ワントンキン MM4b-hk5E)
2024/10/31(木) 01:30:59.58ID:wPOs2skiM >>689
まずは答えてくれ
まずは答えてくれ
691デフォルトの名無しさん (スププ Sd33-ZCk4)
2024/10/31(木) 02:05:01.90ID:VoG7ZiU8d こういうマジのキチガイが書いたコードを見てみたい
692デフォルトの名無しさん (ワッチョイ 0bbc-TzxD)
2024/11/01(金) 00:39:49.91ID:LGoDUDS70 動くわけないだろ
693デフォルトの名無しさん (スップ Sd73-8acW)
2024/11/01(金) 01:39:40.96ID:xmUkk5rld 逃げたか
694デフォルトの名無しさん (ワッチョイ a95f-+Yhf)
2024/11/01(金) 09:10:48.47ID:xFfDlU+j0 >>692
Xenoスレへどうぞ
Xenoスレへどうぞ
695デフォルトの名無しさん (ワッチョイ 75ca-gPyh)
2024/11/04(月) 21:33:20.72ID:YsWUoi9D0 他の言語から来たんだけど「全てがクラスに属する」ことに違和感を感じる
PythonやC++だとフリー関数 (どのクラスにも属さない関数) を作れるけど、C#だと必ずクラスに属するよね
これは言語の思想的に何かしらの意図があるの?
例えば「型Aのインスタンスと型Bのインスタンスを受け取って型Cを返す」処理を書く場合に、C++だといずれのクラスとも無関係な関数という形をとれるけど、C#だと「これはクラスAの責務」のように決める必要がある感じがして、これが慣れない
単に慣れの問題なのか、それともOOPの考え方を理解してしきれてないのか
もし過去に同じような疑問を持って、かつ「現在は腑に落ちた」といった人がいれば、考え方のアドバイスが欲しい
PythonやC++だとフリー関数 (どのクラスにも属さない関数) を作れるけど、C#だと必ずクラスに属するよね
これは言語の思想的に何かしらの意図があるの?
例えば「型Aのインスタンスと型Bのインスタンスを受け取って型Cを返す」処理を書く場合に、C++だといずれのクラスとも無関係な関数という形をとれるけど、C#だと「これはクラスAの責務」のように決める必要がある感じがして、これが慣れない
単に慣れの問題なのか、それともOOPの考え方を理解してしきれてないのか
もし過去に同じような疑問を持って、かつ「現在は腑に落ちた」といった人がいれば、考え方のアドバイスが欲しい
696695 (ワッチョイ 75ca-gPyh)
2024/11/04(月) 21:42:28.51ID:YsWUoi9D0 ↑
念の為に補足すると、インターフェースやポリモーフィズム、カプセル化といったものは理解してるし、「OOPの有用性が分からない」といった話ではないです
ただ「メソッドは全てクラスに属する」という言語仕様については、必ずしも適切でない場面が生じるように感じているのだけど、これはこういう意図だよという説明があれば知りたいという話
念の為に補足すると、インターフェースやポリモーフィズム、カプセル化といったものは理解してるし、「OOPの有用性が分からない」といった話ではないです
ただ「メソッドは全てクラスに属する」という言語仕様については、必ずしも適切でない場面が生じるように感じているのだけど、これはこういう意図だよという説明があれば知りたいという話
697デフォルトの名無しさん (ワッチョイ 926a-J8Po)
2024/11/04(月) 22:07:49.25ID:xYSR/1Hc0 最初からそういうものだと思ってたから、特に違和感を覚えないなぁ
なんの解決にもなってなくてすまんな
なんの解決にもなってなくてすまんな
698デフォルトの名無しさん (ワッチョイ 5e8e-XYkR)
2024/11/04(月) 22:44:03.84ID:AWd+I5uW0 適切でない例を挙げてみろ
己の適応能力のなさを棚に上げるな
どうしても嫌なら自分で言語を作って広めろ
己の適応能力のなさを棚に上げるな
どうしても嫌なら自分で言語を作って広めろ
699デフォルトの名無しさん (ワッチョイ 2578-KsUS)
2024/11/04(月) 23:57:23.42ID:Pz2EFwz+0 >>695
using static じゃあかんの?
using static じゃあかんの?
700デフォルトの名無しさん (ワッチョイ 655f-g20Q)
2024/11/05(火) 00:18:49.53ID:jvZmHUTK0 どーせこういうのは何も考えずにJavaの真似をしたってだけで意味なんて無い
701デフォルトの名無しさん (ワッチョイ f1ad-R8Mz)
2024/11/05(火) 00:45:13.75ID:9reRkGVq0 objectが基底
702デフォルトの名無しさん (オイコラミネオ MMdd-8Jbz)
2024/11/05(火) 01:02:04.27ID:u+uMowqLM >>695
単純な話で
classに属していないと関数名がクラスのメソッドと重複したときに困る
メンバーのthisが必須ならそれも避けられたと思うけど
ライブラリなんかで関数追加されてバッティングしたらアウト
単純な話で
classに属していないと関数名がクラスのメソッドと重複したときに困る
メンバーのthisが必須ならそれも避けられたと思うけど
ライブラリなんかで関数追加されてバッティングしたらアウト
703デフォルトの名無しさん (ワッチョイ e98a-+KN8)
2024/11/05(火) 01:09:12.82ID:Gmtkt7Kl0 名前空間でOK
704デフォルトの名無しさん (ワッチョイ 362f-m4Ma)
2024/11/05(火) 01:16:52.40ID:lWTcKg3j0 メソッドはすべてオブジェクトに属する なら正しいけど、
「メソッドは全てクラスに属する」は間違ってるだろうという突っ込みはおいといて
そもそもオブジェクトのふるまいを規定するのがメソッドなんだから
オブジェクトに属さないメソッドがあるほうがおかしいと思うが
「メソッドは全てクラスに属する」は間違ってるだろうという突っ込みはおいといて
そもそもオブジェクトのふるまいを規定するのがメソッドなんだから
オブジェクトに属さないメソッドがあるほうがおかしいと思うが
705デフォルトの名無しさん (ワッチョイ 8101-WTEK)
2024/11/05(火) 02:02:23.26ID:prltW92g0 じゃあrubyと同じですね(火種を呼び込む)
706デフォルトの名無しさん (ワッチョイ f6a5-C/2Q)
2024/11/05(火) 02:18:04.82ID:JsYkJfXZ0 c#スクリプト使えば関数使えるけど
707デフォルトの名無しさん (ワッチョイ f5d7-8Jbz)
2024/11/05(火) 08:38:47.56ID:gfiZSQIn0 いろんな言語触ってきたから、別に違和感は無かったな
つーかC++だと独立した関数作れるじゃんって、それCベースのなんちゃってオブジェクト指向だからそうなってるだけじゃねっていう
つーかC++だと独立した関数作れるじゃんって、それCベースのなんちゃってオブジェクト指向だからそうなってるだけじゃねっていう
708デフォルトの名無しさん (ワッチョイ ad01-sOIz)
2024/11/05(火) 09:54:24.49ID:brsYk7xk0 言語の成り立ちや思想の違いだよね
C++やPythonは手続き型にオブジェクト指向が足されたものだから最初からオブジェクト指向で考えられてたC#やJavaとは違う
変数や関数が必ず1つの型に属してるという制約は言語を使う側(特にオブジェクト指向で)にとってもだけど言語を作る側にとってもメリットが大きい
名前空間に直接関数を定義するような機能を追加することは不可能じゃないだろうけど得られるメリットはstatic methodsをまとめるstatic classを定義する手間が省けるというだけなので作る側としては割に合わない
C++やPythonは手続き型にオブジェクト指向が足されたものだから最初からオブジェクト指向で考えられてたC#やJavaとは違う
変数や関数が必ず1つの型に属してるという制約は言語を使う側(特にオブジェクト指向で)にとってもだけど言語を作る側にとってもメリットが大きい
名前空間に直接関数を定義するような機能を追加することは不可能じゃないだろうけど得られるメリットはstatic methodsをまとめるstatic classを定義する手間が省けるというだけなので作る側としては割に合わない
709デフォルトの名無しさん (ワッチョイ ad01-sOIz)
2024/11/05(火) 10:03:15.44ID:brsYk7xk0 もっと最近の言語は純粋なオブジェクト指向的な考えから脱却して型に属さずモジュールやパッケージに直接属する関数をサポートするようになってるけどC#をそこまで変える価値はあまりないように思う
710デフォルトの名無しさん (ワッチョイ 71a8-FMQw)
2024/11/05(火) 21:28:01.59ID:/8BJouGs0 C、C++、C#と触ってきたけどC#が一番好き
711デフォルトの名無しさん (アウアウエー Sada-GGiU)
2024/11/05(火) 21:45:32.75ID:JaQWNq5Na C#にトレイトはありますか?
712デフォルトの名無しさん (ワッチョイ 750d-gPyh)
2024/11/05(火) 23:11:34.45ID:Jp4t1BFV0 例えばMath.Sinは「Mathクラスのstaticメソッド」でなく「Math名前空間の関数」でも良くない?という疑問
JavaやC#はstaticメソッドを使うけど、後発の言語 (GoやTypescriptやRust) では関数を使えるから、JavaやC#がこの形にした理由や考え方を知りたかった
言語ができた当時の流行りみたいなものなんですかね?
とりあえず「C#ではそういうもの」と思うことにします
JavaやC#はstaticメソッドを使うけど、後発の言語 (GoやTypescriptやRust) では関数を使えるから、JavaやC#がこの形にした理由や考え方を知りたかった
言語ができた当時の流行りみたいなものなんですかね?
とりあえず「C#ではそういうもの」と思うことにします
713デフォルトの名無しさん (ワッチョイ 750d-gPyh)
2024/11/05(火) 23:23:15.36ID:Jp4t1BFV0 >>704
>そもそもオブジェクトのふるまいを規定するのがメソッドなんだから
>オブジェクトに属さないメソッドがあるほうがおかしいと思うが
インスタンスに紐付くものはこれで納得がいくんだけど、Sin関数やMin関数みたいなものも「オブジェクトの振る舞い」と考えるのがいまいち腑に落ちない
自分の中では、例えばファクトリーのようなものは「クラスに関連する処理だからクラスのstaticメソッドにする」と理解してるけど、これもオブジェクトの振る舞いと考えた方が良かったりする?
>そもそもオブジェクトのふるまいを規定するのがメソッドなんだから
>オブジェクトに属さないメソッドがあるほうがおかしいと思うが
インスタンスに紐付くものはこれで納得がいくんだけど、Sin関数やMin関数みたいなものも「オブジェクトの振る舞い」と考えるのがいまいち腑に落ちない
自分の中では、例えばファクトリーのようなものは「クラスに関連する処理だからクラスのstaticメソッドにする」と理解してるけど、これもオブジェクトの振る舞いと考えた方が良かったりする?
714デフォルトの名無しさん (スップ Sd12-XYkR)
2024/11/05(火) 23:39:06.42ID:9TaJXZqzd 発達障害かな
715デフォルトの名無しさん (スップ Sd12-XYkR)
2024/11/06(水) 01:35:20.53ID:BNeL9QsTd あー、そうか、こいつ倉庫番のあいつか
716デフォルトの名無しさん (ワッチョイ 5e10-8Jbz)
2024/11/06(水) 06:25:17.77ID:zL0JeVCX0 > JavaやC#がこの形にした理由や考え方を知りたかった
こんなとこで訊いても解るわけないだろw
開発者に訊けよ
こんなとこで訊いても解るわけないだろw
開発者に訊けよ
717デフォルトの名無しさん (アウアウエー Sada-GGiU)
2024/11/06(水) 14:23:45.18ID:UH7z1EeFa >>712
Rustだとf32::sinとかf64::sinとか残念仕様
Rustだとf32::sinとかf64::sinとか残念仕様
718デフォルトの名無しさん (JP 0H96-mclZ)
2024/11/06(水) 14:47:55.11ID:blMDB7hqH 当初のマーケティング戦略でしょ
Cと何が違うのかと言われるのが嫌だったんだろう
初期のC#はそういうの割と気を遣って設計されたらしく、varなんかも当初は似た理由で外されたらしい
Cと何が違うのかと言われるのが嫌だったんだろう
初期のC#はそういうの割と気を遣って設計されたらしく、varなんかも当初は似た理由で外されたらしい
719デフォルトの名無しさん (ワッチョイ 4101-WIyV)
2024/11/06(水) 22:08:16.11ID:UgjHScPC0 >>717
どの辺が残念仕様なの?
どの辺が残念仕様なの?
720デフォルトの名無しさん (ワッチョイ b195-uWtd)
2024/11/09(土) 18:18:30.88ID:ABsPyXMa0 Goのstruct使うとよくわかるが、クラスはオブジェクトが渡ってるだけのシンタックスシュガーでしかない
変数.関数が関数(変数)に変換されてるだけ
オブジェクト指向とか言ってるがそんな大層なものではない
だからC言語でも構造体のポインタを第一引数に渡せばオブジェクト指向のようなコードが書ける
C#のstaticメソッドと他言語のXXXパッケージ、ネームスペースに属する関数で特に実質的な違いはないので、その言語特有の書き方ってだけ
変数.関数が関数(変数)に変換されてるだけ
オブジェクト指向とか言ってるがそんな大層なものではない
だからC言語でも構造体のポインタを第一引数に渡せばオブジェクト指向のようなコードが書ける
C#のstaticメソッドと他言語のXXXパッケージ、ネームスペースに属する関数で特に実質的な違いはないので、その言語特有の書き方ってだけ
721デフォルトの名無しさん (ワッチョイ b205-8i/D)
2024/11/09(土) 18:47:30.10ID:eglbI9Vf0 オブジェクト指向言いたいだけやろなぁ
そもそもオブジェクト指向(が何か)言える人おるんかな
そもそもオブジェクト指向(が何か)言える人おるんかな
722デフォルトの名無しさん (ワッチョイ b149-MeJV)
2024/11/09(土) 19:13:50.40ID:veHibMfD0 >>721
アホのひろゆきが
オブジェクト志向を語ってといわれたときに
いきなり「オブジェクト志向というか関数の話なんだけど、・・・」で関数のこと語り始めた動画を思い出した。
その動画ではつっこむ人もいなかった気がする。
世間一般では確かにオブジェクシ志向のこと分かっている人はかなり少ないのかもな。
アホのひろゆきが
オブジェクト志向を語ってといわれたときに
いきなり「オブジェクト志向というか関数の話なんだけど、・・・」で関数のこと語り始めた動画を思い出した。
その動画ではつっこむ人もいなかった気がする。
世間一般では確かにオブジェクシ志向のこと分かっている人はかなり少ないのかもな。
723デフォルトの名無しさん (ワッチョイ b149-MeJV)
2024/11/09(土) 19:14:26.00ID:veHibMfD0 その動画また見たいな。誰か探してきて。
724デフォルトの名無しさん (オイコラミネオ MMdd-8Jbz)
2024/11/09(土) 21:16:08.07ID:nqUkayrkM 人に聞いたりした感想しか述べてない印象
第一引数と変わらないっていうのも出始めぐらいに盛んに言われたけど…
実際見聞きした話じゃなくてお前らはどうなんだ?
コーディングに対してどう思ってるのか?
インスタンスやクラスからエディタから支援されてメソッドが出てくるのが当たり前になってるけど
単純にオブジェクト指向捨ててCに戻ったらまた長い長い呪文みたいな関数を使わなくてはならなくなる
頭でっかちになってはいけないと思うわ
第一引数と変わらないっていうのも出始めぐらいに盛んに言われたけど…
実際見聞きした話じゃなくてお前らはどうなんだ?
コーディングに対してどう思ってるのか?
インスタンスやクラスからエディタから支援されてメソッドが出てくるのが当たり前になってるけど
単純にオブジェクト指向捨ててCに戻ったらまた長い長い呪文みたいな関数を使わなくてはならなくなる
頭でっかちになってはいけないと思うわ
725デフォルトの名無しさん (ワッチョイ 1b79-b0Xs)
2024/11/10(日) 03:12:32.12ID:cLh8//6O0 WindowsのCOMは世界一長生きでメジャーなオブジェクト指向システムの実装例だよなあ
しかもバイナリレベルでインターフェースを規定していて作法に従えばどの言語からも使用できる
オブジェクト指向における1つの到達点と言っていい
しかもバイナリレベルでインターフェースを規定していて作法に従えばどの言語からも使用できる
オブジェクト指向における1つの到達点と言っていい
726デフォルトの名無しさん (ワッチョイ 25b6-x+fa)
2024/11/10(日) 11:03:37.07ID:pSFO10xW0 多言語で利用者可能なプログラムコンポーネントってcomぐらいしかないのかな
727デフォルトの名無しさん (ワッチョイ 03bd-2uFP)
2024/11/10(日) 11:45:15.15ID:XMMNbF5r0 今はもうWeb APIで繋ぐようになってる。
728デフォルトの名無しさん (ワッチョイ 2588-x+fa)
2024/11/10(日) 18:59:55.30ID:pSFO10xW0 そりゃ意味が違うね
729デフォルトの名無しさん (ワッチョイ 23f8-avyG)
2024/11/10(日) 22:06:38.52ID:pWKHNzXW0 今時はGRPCだね
MSも今は亡きWCFの代替としてはGRPC推し
MSも今は亡きWCFの代替としてはGRPC推し
730デフォルトの名無しさん (ワッチョイ 4bcf-xvOx)
2024/11/10(日) 22:36:42.06ID:qC3Ky4ZL0 COMと比較するならCORBAくらいだろう
731デフォルトの名無しさん (ワッチョイ cd30-2Qlp)
2024/11/10(日) 23:25:49.53ID:dkv1a77w0 表現力のあるデータ形式としてJSONやProtocol BuffersやMessagePackを使って、それでサーバーと通信する (プロセス間通信も含む) ことで言語を跨ぐことはできるけど、オブジェクト指向ではないと思う
複雑すぎて使いにくかったけど、COMはインタフェースによる抽象化を提供していた
複雑すぎて使いにくかったけど、COMはインタフェースによる抽象化を提供していた
732デフォルトの名無しさん (ワッチョイ 252f-x+fa)
2024/11/10(日) 23:40:55.60ID:pSFO10xW0 昔はVBのフォームの中にVC++やらJ++で作ったコントロールが仲良く共存して連携してた時代があったよねと
733デフォルトの名無しさん (ワッチョイ 252f-x+fa)
2024/11/10(日) 23:43:29.69ID:pSFO10xW0 そういや、エンジニア駆け出しの頃にLotus Notesの画面内にExcelとかVBで作ったカスタムコントロールを配置して、Notesの垣根を取っ払った開発やってたなーー
734デフォルトの名無しさん (ワッチョイ 252f-x+fa)
2024/11/10(日) 23:47:27.45ID:pSFO10xW0 Dcomとかでクライアント側からサーバー側にcomインスタンスをnewしてたわーー
その頃Transaction ServerがOSの標準機能になったりして感動!とか昔の方がすげーーな
その頃Transaction ServerがOSの標準機能になったりして感動!とか昔の方がすげーーな
735デフォルトの名無しさん (アウアウエー Sa13-vkNS)
2024/11/11(月) 06:07:07.08ID:mTrGHtv9a socket最強
736デフォルトの名無しさん (ワッチョイ 4b10-xvOx)
2024/11/11(月) 06:36:35.45ID:xfSMYXAu0 >>731
データ指向
データ指向
737デフォルトの名無しさん (スッップ Sd43-avyG)
2024/11/11(月) 07:58:42.58ID:uMgTLfPSd オブジェクト参照をサーバー側で管理するのはセッション数が多いと不可能だからね
だからCOMは分散オブジェクト指向技術としては工場のようにノード数が比較的少数かつ確定的で、密な通信を必要とする分野でしか採用されなかった
だからCOMは分散オブジェクト指向技術としては工場のようにノード数が比較的少数かつ確定的で、密な通信を必要とする分野でしか採用されなかった
738デフォルトの名無しさん (アウアウエー Sa13-vkNS)
2024/11/11(月) 09:18:04.54ID:RXw/cl7Za javascript で JSON の中に callback とか描いてあるのあったな
あれ何指向って言うんだ?
ajax?ωωω=2πf
あれ何指向って言うんだ?
ajax?ωωω=2πf
739デフォルトの名無しさん (ワッチョイ e305-zNkO)
2024/11/11(月) 09:43:18.30ID:YFY50Prw0 無理して指向言わんでええ
740デフォルトの名無しさん (ササクッテロラ Spc1-gsEs)
2024/11/11(月) 10:33:14.38ID:dLpe2cr6p 実装の機能一つ取って、〇〇志向とか無いから
741デフォルトの名無しさん (ワッチョイ 1bcd-FxXv)
2024/11/11(月) 12:57:50.96ID:ka8ZtxVN0 コピペ指向
742デフォルトの名無しさん (ワッチョイ 1549-XNRQ)
2024/11/11(月) 13:38:15.28ID:nfNcU7xN0743デフォルトの名無しさん (ワッチョイ 23ee-Pbsq)
2024/11/11(月) 15:47:59.61ID:hdpWkxQQ0 中の人が見てたらお願いなんだけどさ
Blazor等のチュートリアルを作り直す暇もないんだろうけど、せめて時代錯誤になった部分はその旨を記載しておいてくれないかな?
Blazor等のチュートリアルを作り直す暇もないんだろうけど、せめて時代錯誤になった部分はその旨を記載しておいてくれないかな?
744デフォルトの名無しさん (ワッチョイ 2302-ST7W)
2024/11/11(月) 21:07:13.60ID:uK+aOkTu0 c#って、メモリーリーク起きないの?
ある変数に別のインスタンスを代入したら、
前のインスタンスは開放されるの?
ある変数に別のインスタンスを代入したら、
前のインスタンスは開放されるの?
745デフォルトの名無しさん (ワッチョイ e305-zNkO)
2024/11/11(月) 21:09:25.09ID:YFY50Prw0 メモリリークはもはやOSの問題やろ
746デフォルトの名無しさん (ワッチョイ 23fb-WOTT)
2024/11/11(月) 21:12:15.19ID:LjE5jZL90 GCがメモリ開放するところ見ればわかる
747デフォルトの名無しさん (ササクッテロラ Spc1-gsEs)
2024/11/11(月) 21:12:37.72ID:uoazDs9sp メモリーリークあるよ
リソース食い潰したら
勝手に解放し出すから
ちゃんとしないとリークしまくる
リソース食い潰したら
勝手に解放し出すから
ちゃんとしないとリークしまくる
748デフォルトの名無しさん (ワッチョイ 1b2f-2Qlp)
2024/11/12(火) 00:50:14.30ID:ccOC7O4w0 メモリリークの定義教えてくれ
開放してくれるならリークしていないんだが
開放してくれるならリークしていないんだが
749デフォルトの名無しさん (ワッチョイ 4b8e-c8Lf)
2024/11/12(火) 00:59:41.24ID:J1Sn69yS0 >>747
勝手に解放するって言っても使われていないと判断されたメモリーだけだろ
勝手に解放するって言っても使われていないと判断されたメモリーだけだろ
750デフォルトの名無しさん (ワッチョイ 2302-ST7W)
2024/11/12(火) 02:01:47.97ID:6pRktkeB0 結局、
誰もわかってないという…
メモリーリーク
誰もわかってないという…
メモリーリーク
751デフォルトの名無しさん (ワッチョイ cb31-QT1F)
2024/11/12(火) 05:01:21.60ID:d1j1inpD0 水割りをください
涙の数だけ
涙の数だけ
752デフォルトの名無しさん (ワッチョイ e305-zNkO)
2024/11/12(火) 08:17:28.74ID:b+Bf1Vp60 おっさんホイホイがここにも
753デフォルトの名無しさん (ワッチョイ 1d8d-gsEs)
2024/11/12(火) 08:29:29.22ID://05srW70754デフォルトの名無しさん (ラクッペペ MM4b-LGTl)
2024/11/12(火) 08:32:28.01ID:2QvyeV96M >>745
OSがバグってるなら回避するのがプログラマーの約目でしょ
OSがバグってるなら回避するのがプログラマーの約目でしょ
755デフォルトの名無しさん (ワッチョイ cdd7-xvOx)
2024/11/12(火) 08:44:47.73ID:h12Q6Ovl0 いや?
756デフォルトの名無しさん (JP 0H4b-avyG)
2024/11/12(火) 12:48:54.62ID:yymNbFMxH OSがバグってるならとりあえずMSのせいにして客にエスカレーションして困らせてサボるのがプロ業務系プログラマ
757デフォルトの名無しさん (ワッチョイ e305-zNkO)
2024/11/12(火) 21:44:11.31ID:b+Bf1Vp60 多分マイクロソフトよりアンドロイドの方がまし
アンドロイド搭載パソコンなら問題ない
アンドロイド搭載パソコンなら問題ない
758デフォルトの名無しさん (ワッチョイ cdd4-MfT4)
2024/11/12(火) 22:58:07.51ID:5fJOoIcx0 >>744
Disposeしないと解放されないリソースはDisposeしないとダメ
それ以外は基本的にGC任せで良い
var x = new Foo();
のようにして確保されたオブジェクトはGCが面倒を見る
C++のように delete x; を呼んでないからオブジェクトが破棄されずリークする、なんてことはない
var x = new Foo();
x = new Foo();
x = new Foo();
のようにすればオブジェクトは多数生成されるけど、それは再代入時でなく、GCが要らないと判断したタイミングで回収される
(GCが走るまでメモリ使用量が増え続けるという意味でもある)
アンマネージドなリソース、例えば開いたファイルのハンドルみたいなものはGC任せにできない
仮にファイルハンドルがオブジェクトの寿命に紐付いていると、使い終わったファイルがいつ閉じられるのかが分からない (GCのタイミングに依存する) なんてことになる
そういう制約があるので、明示的な破棄が必要なリソースを持つクラスについては Dispose を呼ぶ (あるいはusing句を使って使用期間を限定する) 必要がある
仮にC#のクラスが内部的にCのライブラリを呼んでおり、その中で多量のメモリを確保するような場合だと、Disposeしないと多量のメモリが破棄されないままになりリークする
Disposeしないと解放されないリソースはDisposeしないとダメ
それ以外は基本的にGC任せで良い
var x = new Foo();
のようにして確保されたオブジェクトはGCが面倒を見る
C++のように delete x; を呼んでないからオブジェクトが破棄されずリークする、なんてことはない
var x = new Foo();
x = new Foo();
x = new Foo();
のようにすればオブジェクトは多数生成されるけど、それは再代入時でなく、GCが要らないと判断したタイミングで回収される
(GCが走るまでメモリ使用量が増え続けるという意味でもある)
アンマネージドなリソース、例えば開いたファイルのハンドルみたいなものはGC任せにできない
仮にファイルハンドルがオブジェクトの寿命に紐付いていると、使い終わったファイルがいつ閉じられるのかが分からない (GCのタイミングに依存する) なんてことになる
そういう制約があるので、明示的な破棄が必要なリソースを持つクラスについては Dispose を呼ぶ (あるいはusing句を使って使用期間を限定する) 必要がある
仮にC#のクラスが内部的にCのライブラリを呼んでおり、その中で多量のメモリを確保するような場合だと、Disposeしないと多量のメモリが破棄されないままになりリークする
759デフォルトの名無しさん (ワッチョイ cdd4-MfT4)
2024/11/12(火) 23:38:23.53ID:5fJOoIcx0 上記のような再代入をすると「どの変数にも紐付いてないけどオブジェクトは生きている」状態になる
GCは適当なタイミングでオブジェクトを検査して、使われてなければ破棄するといった動きをする
CやC++のようにオブジェクトを破棄する責務がプログラマ側にある原画だと、オブジェクトがどの変数にも紐付かない状態になってしまった時点でそれは解放する方法がなくなる
GCは適当なタイミングでオブジェクトを検査して、使われてなければ破棄するといった動きをする
CやC++のようにオブジェクトを破棄する責務がプログラマ側にある原画だと、オブジェクトがどの変数にも紐付かない状態になってしまった時点でそれは解放する方法がなくなる
760744 (ワッチョイ 2302-ST7W)
2024/11/12(火) 23:55:19.73ID:6pRktkeB0761デフォルトの名無しさん (ワッチョイ 95cf-FVZ9)
2024/11/13(水) 00:18:00.06ID:McepvooC0 サービスの話?
762デフォルトの名無しさん (ワッチョイ cdd4-MfT4)
2024/11/13(水) 00:33:48.38ID:bSiUYbhg0 >>760
解放が必要なリソースを持つクラスは IDisposable というインターフェースを継承してて、それが Dispose() メソッドを持つ
IDisposableなものはusingを使うことで「スコープを抜けたらリソース破棄」という書き方ができる
詳しくはマイクロソフトの解説
https://learn.microsoft.com/ja-jp/dotnet/standard/garbage-collection/using-objects
IDisposableなものは原則的に必ずDisposeを呼ぶべき
GCはこれらの面倒を見ないので「解放のタイミングが不安定になる」ではなく「解放されない」動きになる
逆にIDisposableでないものはDisposeメソッドを持たない
だからもし「C#のクラスは破棄が必要なものとそうでないものがある → 安全のためにとりあえず全て Dispose を呼ぶようにしよう」という考えをしたなら、それはちょっと違う
解放が必要なリソースを持つクラスは IDisposable というインターフェースを継承してて、それが Dispose() メソッドを持つ
IDisposableなものはusingを使うことで「スコープを抜けたらリソース破棄」という書き方ができる
詳しくはマイクロソフトの解説
https://learn.microsoft.com/ja-jp/dotnet/standard/garbage-collection/using-objects
IDisposableなものは原則的に必ずDisposeを呼ぶべき
GCはこれらの面倒を見ないので「解放のタイミングが不安定になる」ではなく「解放されない」動きになる
逆にIDisposableでないものはDisposeメソッドを持たない
だからもし「C#のクラスは破棄が必要なものとそうでないものがある → 安全のためにとりあえず全て Dispose を呼ぶようにしよう」という考えをしたなら、それはちょっと違う
763デフォルトの名無しさん (ワッチョイ 4b8e-DV/N)
2024/11/13(水) 00:35:07.28ID:F0Fw8KYz0 >>760
頭弱そう
頭弱そう
764デフォルトの名無しさん (アウアウエー Sa13-vkNS)
2024/11/13(水) 02:02:22.70ID:lxEAsUm8a interfaceですしおすし
765デフォルトの名無しさん (ワッチョイ 25db-QT1F)
2024/11/13(水) 03:10:10.21ID:T9toDS8e0 リソースじゃないけど、c++のデストラクタみたいな事したくてusing使っちゃあかんの?
tryで囲むの超めんどくさいんだけど。
tryで囲むの超めんどくさいんだけど。
766デフォルトの名無しさん (ワッチョイ 4b10-xvOx)
2024/11/13(水) 06:19:43.96ID:nRFDv3b60 C++のデストラクタみたいな事したくてusingってのがよくわからんけど
try-finallyでDisposeするだけならusingでも同じことやぞ
try-finallyでDisposeするだけならusingでも同じことやぞ
767デフォルトの名無しさん (ワッチョイ 25db-QT1F)
2024/11/13(水) 07:20:57.60ID:T9toDS8e0 何ヶ所も同じようなfinally内容が必要な時にdisposeメソッドにまとめられるじゃない
768デフォルトの名無しさん (ワッチョイ 4b10-xvOx)
2024/11/13(水) 07:28:32.00ID:nRFDv3b60 いやほんと何言ってんのかわかんねぇ……
お前は一つのクラスが持つリソースの解放を
クラス外のあちこちでtry-catchしてやるんか
お前は一つのクラスが持つリソースの解放を
クラス外のあちこちでtry-catchしてやるんか
769デフォルトの名無しさん (ワッチョイ cdd4-MfT4)
2024/11/13(水) 07:41:05.87ID:bSiUYbhg0 「オブジェクトの開放時に何かをしたい」という意味ならまさにそれがDisposeの使いどころ
自作クラスにIDisposableを実装すればDispose()でリソースを破棄できるし、using句で「スコープを抜けたら解放」という使い方もできる
C#にもデストラクタはあるけど、これはGCによる回収時に呼ばれるから、いつ呼ばれるかは不安定
処理し忘れを防ぐ程度の使い方はできるけど、基本的にはあまり使わない
マネージドなリソースしか持たないクラスならDisposeは要らない
var x = new Foo();
var y = new Bar(x);
のような場合でも、FooやBarがDisposeを必要としないならGCが適切に処理してくれるので、例えば「Barのデストラクタ内でFooをdeleteする」などの処理は書かなくてOK
どちらもGCが管理してくれる
C++から来た場合はこれを「管理しなくても解放し忘れが無くて安心」と思うか「解放のタイミングを制御できない 」と思うかは分かれるかもしれない
今でこそC++にはスマートポインタがあるけど、それ以前の生ポインタしかなかった頃を考えると、解放し忘れを防げるのはメリットとして大きい
自作クラスにIDisposableを実装すればDispose()でリソースを破棄できるし、using句で「スコープを抜けたら解放」という使い方もできる
C#にもデストラクタはあるけど、これはGCによる回収時に呼ばれるから、いつ呼ばれるかは不安定
処理し忘れを防ぐ程度の使い方はできるけど、基本的にはあまり使わない
マネージドなリソースしか持たないクラスならDisposeは要らない
var x = new Foo();
var y = new Bar(x);
のような場合でも、FooやBarがDisposeを必要としないならGCが適切に処理してくれるので、例えば「Barのデストラクタ内でFooをdeleteする」などの処理は書かなくてOK
どちらもGCが管理してくれる
C++から来た場合はこれを「管理しなくても解放し忘れが無くて安心」と思うか「解放のタイミングを制御できない 」と思うかは分かれるかもしれない
今でこそC++にはスマートポインタがあるけど、それ以前の生ポインタしかなかった頃を考えると、解放し忘れを防げるのはメリットとして大きい
770デフォルトの名無しさん (ワッチョイ e305-zNkO)
2024/11/13(水) 08:34:34.33ID:YzA/YIME0 おまいらどんだけメモリリーク気にする程のドデカイプログラム作ってんだよ
気にするだけ無駄や
気にするだけ無駄や
771デフォルトの名無しさん (ラクッペペ MM4b-LGTl)
2024/11/13(水) 09:24:39.60ID:yVT3j+C4M 今の開発環境なら警告出るしな
サクラエディタで書いてるのなら大変かもな
サクラエディタで書いてるのなら大変かもな
772デフォルトの名無しさん (ワッチョイ cb1c-gsEs)
2024/11/13(水) 09:58:20.49ID:ZYmwt0ti0773デフォルトの名無しさん (ワッチョイ 9589-SrFb)
2024/11/13(水) 12:14:29.52ID:RNEwjcau0 MainWindowのメンバ変数で
byte[] foo=new byte[100];
と定義するとアプリ終了までGCされないでokですか?
また、byte[] foo;で定義して、
メンバ関数でfoo=new byte[100];とやるとどのタイミングでGCされますか?
byte[] foo=new byte[100];
と定義するとアプリ終了までGCされないでokですか?
また、byte[] foo;で定義して、
メンバ関数でfoo=new byte[100];とやるとどのタイミングでGCされますか?
774デフォルトの名無しさん (アウアウエー Sa13-vkNS)
2024/11/13(水) 12:43:29.05ID:T0htHWVna byte[] foo=new byte[100];
も
byte[] foo;
foo=new byte[100];
も一緒やろ
別の場所で
foo=new byte[200];
とか新しく上書きされたらどうすんねん
も
byte[] foo;
foo=new byte[100];
も一緒やろ
別の場所で
foo=new byte[200];
とか新しく上書きされたらどうすんねん
775デフォルトの名無しさん (ワッチョイ 7570-UKB1)
2024/11/13(水) 12:45:32.83ID:xPjlOgQq0776デフォルトの名無しさん (ワッチョイ cdd7-xvOx)
2024/11/13(水) 14:11:22.42ID:iz/BtWmN0 >>773
どれもこれも、YesでありNoでもある
どれもこれも、YesでありNoでもある
777デフォルトの名無しさん (ワッチョイ bddb-/Xjz)
2024/11/13(水) 15:45:52.66ID:cFKLZOQI0 もう.NET9かよ早すぎだろ
778デフォルトの名無しさん (ワッチョイ cb1c-gsEs)
2024/11/13(水) 16:35:22.94ID:ZYmwt0ti0 いつGCされるかって?
知らねーよ、分かる筈も無い
知らねーよ、分かる筈も無い
779744 (ワッチョイ 2302-ST7W)
2024/11/13(水) 16:38:34.46ID:a49735QS0780744 (ワッチョイ 2302-ST7W)
2024/11/13(水) 16:42:29.44ID:a49735QS0782デフォルトの名無しさん (ワッチョイ 1b59-avyG)
2024/11/13(水) 17:04:36.55ID:sAaCV0t50 今時ゲームをエンジンからフルスクラッチで作るなんてまず無いでしょ
783デフォルトの名無しさん (ワッチョイ 9ba6-WOTT)
2024/11/13(水) 17:29:09.83ID:vqXyiTbO0 自分でGC呼び出すとメモリ解放してくれるよ
ただし呼び出し後即時に解放せずに早めのどこかのタイミングで解放する
ただし呼び出し後即時に解放せずに早めのどこかのタイミングで解放する
784デフォルトの名無しさん (ワッチョイ cd3e-NAIN)
2024/11/13(水) 18:43:26.50ID:whKN5Z/j0785デフォルトの名無しさん (JP 0H4b-xvOx)
2024/11/13(水) 18:57:44.36ID:o4hFY4U3H 奇数バージョンはスキップ
786デフォルトの名無しさん (ワッチョイ 9b6a-s1s7)
2024/11/13(水) 20:50:29.02ID:4Gtrs6mx0 C#的にはparams ReadOnlySpan<T>ぐらい
extensionはまだかよー
extensionはまだかよー
787デフォルトの名無しさん (ワッチョイ 4bcf-xvOx)
2024/11/13(水) 21:04:44.68ID:kds0MnRn0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- パラドゲーやってる人に聞きたい総理の発言がそのまま国家意思になるって中世かよ [279479878]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 風呂入らないと下半身温まらない
- かしこいワンコっていうVtuberの子知ってる?
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
