!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:8k78Qd14M748デフォルトの名無しさん (ワッチョイ 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:kds0MnRn0788デフォルトの名無しさん (ワッチョイ e305-zNkO)
2024/11/13(水) 21:30:27.03ID:YzA/YIME0 どこかのタイミング
要はわからんってことや
要はわからんってことや
789デフォルトの名無しさん (ワッチョイ 1595-Ebli)
2024/11/13(水) 23:22:35.23ID:B1wcj+YZ0 C#13つまらなすぎる
なんでfieldないんだよ
なんでfieldないんだよ
790デフォルトの名無しさん (オイコラミネオ MMc9-xvOx)
2024/11/14(木) 22:34:19.42ID:GZKxZF1dM C#は枯れてきてもうやることがなくなって来たんだよね
Unityも下火になって来たしそろそろ10年ぐらい続いたC#でゲームブームも終わるのか
Unityも下火になって来たしそろそろ10年ぐらい続いたC#でゲームブームも終わるのか
791デフォルトの名無しさん (ワッチョイ 238b-fnp+)
2024/11/15(金) 07:47:05.02ID:JOQazMVA0 そもそもC#や.NETのバージョンアップに比べてUnityが全く進化してないからな
792デフォルトの名無しさん (ササクッテロラ Spc1-gsEs)
2024/11/15(金) 09:59:56.57ID:MiaDhD69p Unityはスクリプト言語をC#にしただけだろ?
793デフォルトの名無しさん (ワッチョイ e313-avyG)
2024/11/15(金) 10:08:40.56ID:Ka+Ndc6r0 プログラミング言語全体が下火なんだよなあ
すっかり生成AI前提になり、モダンな〇〇言語ではこう書けるんだぜクールだろ、みたいなネタはもはや全く注目されなくなってしまった
一方で保守的に速度と厳密性を追求する分野はRustが台頭してきており、これ以上の多様性を受容するほどコミュニティベースが大きくないから当分この状況は変わらないだろう
今求められているのはAIを前提としたAIフレンドリーな言語で、人間用のプログラム言語の世界では最後の大規模な勢力争いになるだろうね
すっかり生成AI前提になり、モダンな〇〇言語ではこう書けるんだぜクールだろ、みたいなネタはもはや全く注目されなくなってしまった
一方で保守的に速度と厳密性を追求する分野はRustが台頭してきており、これ以上の多様性を受容するほどコミュニティベースが大きくないから当分この状況は変わらないだろう
今求められているのはAIを前提としたAIフレンドリーな言語で、人間用のプログラム言語の世界では最後の大規模な勢力争いになるだろうね
794デフォルトの名無しさん (ササクッテロラ Spc1-gsEs)
2024/11/15(金) 10:11:09.02ID:MiaDhD69p 妄想はチラシの裏にでも書いとけよ
795デフォルトの名無しさん (ワッチョイ 2571-x+fa)
2024/11/15(金) 10:16:01.10ID:N6Yz1jkv0 >>プログラミング言語全体が下火
何処の世界の人なんだろうか...
何処の世界の人なんだろうか...
796デフォルトの名無しさん (ワッチョイ 2348-Pbsq)
2024/11/15(金) 18:53:10.49ID:NYn3mfHi0 どうせ例のホリエモンとかタラコとかが好きな人でしょ
797デフォルトの名無しさん (ワッチョイ 2302-ST7W)
2024/11/15(金) 19:51:58.73ID:VwNWJqLE0798デフォルトの名無しさん (ワッチョイ 758b-UKB1)
2024/11/15(金) 20:06:47.23ID:BmyaSFc60 クラスって渡せるんだっけ?
799デフォルトの名無しさん (ワッチョイ 1b79-b0Xs)
2024/11/15(金) 20:27:55.20ID:xDAXGSSE0 クラスへのポインタをポピー!
味わい深い
味わい深い
800デフォルトの名無しさん (ササクッテロラ Spc1-gsEs)
2024/11/15(金) 20:32:02.03ID:btoL8w9Qp >>798
渡せるのはクラスオブジェクトだ
渡せるのはクラスオブジェクトだ
801デフォルトの名無しさん (ササクッテロラ Spc1-gsEs)
2024/11/15(金) 20:32:51.22ID:btoL8w9Qp 厳密にはクラスオブジェクトのポインタだね
802デフォルトの名無しさん (ササクッテロラ Spc1-gsEs)
2024/11/15(金) 20:34:24.14ID:MoNXXLAep ああ、クラスコードそのものも渡せるなぁ
803デフォルトの名無しさん (ワッチョイ 4b10-xvOx)
2024/11/16(土) 06:46:10.41ID:qCnJNgbf0 >>797
参照くらい知っとけ
参照くらい知っとけ
804デフォルトの名無しさん (ワッチョイ 4b21-Hy2o)
2024/11/16(土) 08:39:25.08ID:AKFzyauM0 Win11のコンソールウィンドウで、画面からはみ出した上のほうの行が表示されない
Console.BufferHeightの行数の設定がマズいのかもしれないが、よく分からない
Console.BufferHeightの行数の設定がマズいのかもしれないが、よく分からない
805デフォルトの名無しさん (ワッチョイ 4559-wXm2)
2024/11/16(土) 15:15:41.19ID:GSPZQP9h0 >>803
うなぎの蒲焼きには必須だよね
うなぎの蒲焼きには必須だよね
>>803
Call by Nameとの違いを3行で
Call by Nameとの違いを3行で
807デフォルトの名無しさん (ワッチョイ 2302-ST7W)
2024/11/16(土) 20:03:57.66ID:WipzlT6O0808デフォルトの名無しさん (ワッチョイ 453e-UKB1)
2024/11/16(土) 21:29:56.73ID:Wc0ai5mi0 ww
微笑ましい煽り
微笑ましい煽り
809デフォルトの名無しさん (ワッチョイ 62d6-EBAf)
2024/11/18(月) 07:07:02.90ID:INV+aJIp0 【ナゾロジー】サイコパスは「痛みを伴う失敗」から学習できない! [すらいむ★]
http://itest.5ch.net/egg/test/read.cgi/scienceplus/1731838156
http://itest.5ch.net/egg/test/read.cgi/scienceplus/1731838156
810デフォルトの名無しさん (スププ Sd02-pJ+S)
2024/11/23(土) 15:39:50.83ID:dIdD47Ipd yieldの使い道がわからないなり…
811デフォルトの名無しさん (ワッチョイ 0610-xZnB)
2024/11/23(土) 17:02:37.47ID:+S3zqAg/0 わからないなら無理に使わなくてもえぇんやで
812デフォルトの名無しさん (ワッチョイ 0e79-Yo0P)
2024/11/23(土) 17:05:22.10ID:0fvlCeGq0 yieldが出てくるメソッドは外部イテレータ用にデータコレクションが紐付いた限定的な継続オブジェクト(IEnumerable)を返すようになってる
この継続とはSchemeで言う継続呼び出し(call with current continuation)辺りに精通してないと恐らく真の動きは理解できないと思うけど
yieldキーワードを書くだけで、そのメソッドは見かけ上呼び出し先の処理を中断して、呼び出し元で結果を受け取る事ができ、望めば処理の再開もできるように限定的な状態機械に翻訳される
この一連の仕組みをいちいち自作するのは面倒なのでyieldキーワード等が用意されてる
実際何が起きてるのかはILSpyとかで追わないと判らんと思う
この継続とはSchemeで言う継続呼び出し(call with current continuation)辺りに精通してないと恐らく真の動きは理解できないと思うけど
yieldキーワードを書くだけで、そのメソッドは見かけ上呼び出し先の処理を中断して、呼び出し元で結果を受け取る事ができ、望めば処理の再開もできるように限定的な状態機械に翻訳される
この一連の仕組みをいちいち自作するのは面倒なのでyieldキーワード等が用意されてる
実際何が起きてるのかはILSpyとかで追わないと判らんと思う
813デフォルトの名無しさん (ワッチョイ 0e79-Yo0P)
2024/11/23(土) 17:26:45.50ID:0fvlCeGq0 これの何が嬉しいかというと、上の複雑な仕組みを外部イテレータというインターフェースに落とし込んでforeachとかで抽象化して扱える事にある
逆に抽象的ということは普通に列挙するよりかは効率が悪いのと、yieldメソッド内は制限が多い
使い所としては、いつ終わるか判らない、もしくは終わらないような処理で途中結果が欲しい場合とか
逆に抽象的ということは普通に列挙するよりかは効率が悪いのと、yieldメソッド内は制限が多い
使い所としては、いつ終わるか判らない、もしくは終わらないような処理で途中結果が欲しい場合とか
814デフォルトの名無しさん (ワッチョイ ff85-zwOW)
2024/11/24(日) 03:27:53.65ID:pKw1EAws0 わからないなら無理に使わなくてもいいるど
815デフォルトの名無しさん (ワッチョイ 9f02-cdGy)
2024/11/24(日) 04:01:48.47ID:u53SJ5yz0816デフォルトの名無しさん (オイコラミネオ MM9b-egXh)
2024/11/24(日) 09:56:29.38ID:kUToI6JtM yield使ったメソッドはコルーチンと言うものの一種で関数は通常再実行されても頭から実行されるけど
コルーチンはreturnした場所から再実行されるもの
実際は状態を内部で持つようにコンパイラで書き換えて実現してる
状態遷移を伴った複雑なシーケンスを列挙するときに便利なのでそういう仕組みがあるけど使わない人は使わない
ゲームの敵キャラなんかの動き、音楽再生なんかにも使えるけど普通のメソッドで作ったほうが良い
コルーチンはreturnした場所から再実行されるもの
実際は状態を内部で持つようにコンパイラで書き換えて実現してる
状態遷移を伴った複雑なシーケンスを列挙するときに便利なのでそういう仕組みがあるけど使わない人は使わない
ゲームの敵キャラなんかの動き、音楽再生なんかにも使えるけど普通のメソッドで作ったほうが良い
817デフォルトの名無しさん (ワッチョイ d725-oOJo)
2024/11/24(日) 10:18:54.22ID:gto9pmL30 yield便利だよね
818デフォルトの名無しさん (オイコラミネオ MM9b-egXh)
2024/11/24(日) 10:25:55.74ID:kUToI6JtM Linq,Async,Rx等とは相性はいい
819デフォルトの名無しさん (ワッチョイ 9f02-cdGy)
2024/11/24(日) 10:32:47.48ID:u53SJ5yz0820デフォルトの名無しさん (ワッチョイ 9f02-cdGy)
2024/11/24(日) 10:36:16.43ID:u53SJ5yz0821デフォルトの名無しさん (アウアウエー Sadf-wjfe)
2024/11/24(日) 10:39:56.50ID:9Gv3GpvEa yieldって勝手にマルチスレッドになる?
822デフォルトの名無しさん (ワッチョイ ff95-zS0G)
2024/11/24(日) 11:11:44.42ID:GiK5O5OL0823デフォルトの名無しさん (ワッチョイ f7d7-egXh)
2024/11/24(日) 11:43:31.53ID:y51b8un80 最先端じゃなくてもC#使わないだろw
824デフォルトの名無しさん (ワッチョイ 1fbd-6m00)
2024/11/24(日) 12:16:02.02ID:XzS0JgVO0 UnityだとC#じゃないの? 知らんけど。
825デフォルトの名無しさん (ワッチョイ ff10-egXh)
2024/11/24(日) 13:41:46.63ID:gkPESB8i0 突然バージョン番号が爆上がりしたライブラリさんじゃないですか
そういえばプリキュアのエンディングムービー作るのに使われてたとか
そういえばプリキュアのエンディングムービー作るのに使われてたとか
826デフォルトの名無しさん (ワッチョイ 7778-lJYL)
2024/11/24(日) 15:17:49.23ID:GgS92Yo80 カプコンのREエンジンはC#だな
開発ツール類はWPFとC#で作っているのがそれなりにある
開発ツール類はWPFとC#で作っているのがそれなりにある
827デフォルトの名無しさん (ワッチョイ 9f02-cdGy)
2024/11/24(日) 15:23:54.34ID:u53SJ5yz0828デフォルトの名無しさん (ワッチョイ 5701-W1rI)
2024/11/24(日) 19:15:56.38ID:UAUyH8bw0 どうしたんだ?何か辛いことでもあった?
829デフォルトの名無しさん (ワッチョイ 9f05-4RwW)
2024/11/24(日) 20:57:17.89ID:00v/i1H+0 ここUnity関係ないのよね
830デフォルトの名無しさん (ワッチョイ f789-ksDR)
2024/11/27(水) 14:25:40.66ID:lxFJutvX0 ゲーマー目線だと、グラフィックに関して言えば、スクウェア(スクエニ)は確実に世界最高レベル帯で、
カプコンは一段劣るイメージだったんだけど、今じゃカプコンのほうがマシに見えるようになってきた。
FF7Rは別格だけど。
カプコンは一段劣るイメージだったんだけど、今じゃカプコンのほうがマシに見えるようになってきた。
FF7Rは別格だけど。
831デフォルトの名無しさん (ワッチョイ 9f02-cdGy)
2024/11/27(水) 14:32:57.33ID:KEKTkFea0832デフォルトの名無しさん (スププ Sdbf-TCem)
2024/11/27(水) 20:12:09.73ID:04jGnn85d ゲームでC#ってどうなんだろ
もう数年前の話で携帯アプリで使ってたって言ってたけど、その時はGC走るとやっぱりカクつくって言ってたもんなー
俺が作ってた頃はDirectXでゴリゴリ書いてたけど、もうそんな手間も今はないんだろうなー
もう数年前の話で携帯アプリで使ってたって言ってたけど、その時はGC走るとやっぱりカクつくって言ってたもんなー
俺が作ってた頃はDirectXでゴリゴリ書いてたけど、もうそんな手間も今はないんだろうなー
833デフォルトの名無しさん (ササクッテロ Spcb-8bf6)
2024/11/27(水) 20:19:32.57ID:nVfa1m6ip GCされない様に全部スタティックなグローバルな変数にするよ
834デフォルトの名無しさん (ワッチョイ 9f05-4RwW)
2024/11/27(水) 22:57:56.72ID:rC6zBaUk0 スマホやなくて携帯かよ
携帯でGC走るとかそんなのあるんか
携帯でGC走るとかそんなのあるんか
835デフォルトの名無しさん (ワッチョイ b7d9-eqPa)
2024/11/28(木) 06:03:41.07ID:FYbvHN5w0 数年前ならスマホだろ?
携帯電話=スマホ
10年前ならi-modeなどだろ?
携帯電話=スマホ
10年前ならi-modeなどだろ?
836デフォルトの名無しさん (ワッチョイ ff10-egXh)
2024/11/28(木) 06:59:00.90ID:LtNI1WyS0 まぁ、携帯電話ってスマホも含むもんな
837デフォルトの名無しさん (ササクッテロ Spcb-8bf6)
2024/11/28(木) 09:14:23.11ID:uPmWApFop 最初に大量にヒープ取ってメモリー管理を自前でやる
838デフォルトの名無しさん (ワッチョイ 776e-egXh)
2024/11/28(木) 09:34:29.98ID:eutxUc2b0 C#ってWindows Phoneの中核言語に据えて全世界30億人が使う予定だったけど
撤退したせいで何もかもが半端な存在になっちゃったな
特にライブラリ・フレームワークの取っ散らかり方がひどい
撤退したせいで何もかもが半端な存在になっちゃったな
特にライブラリ・フレームワークの取っ散らかり方がひどい
839デフォルトの名無しさん (ワッチョイ 9f02-cdGy)
2024/11/28(木) 09:47:41.85ID:MV0zaiYm0 GCを停止ってできないっけ?
840デフォルトの名無しさん (ワッチョイ 1f47-wRxM)
2024/11/28(木) 10:05:26.48ID:wArzfhTM0 一時的にGCを抑制する仕組みはあるけど、ずっと止めるのは無理
841デフォルトの名無しさん (ワッチョイ 7f7c-fTgC)
2024/11/28(木) 12:00:14.92ID:uGsutY3k0 spanってヒープで使えないんだっけ?
使えれば、GC走るのは無視できそう
使えれば、GC走るのは無視できそう
842デフォルトの名無しさん (ワッチョイ ff95-zS0G)
2024/11/28(木) 15:25:41.86ID:CkB3E3s60 >>841
spanはヒープスタック任意のメモリを指せるが、span自体の領域はスタックに確保する必要がある
よってasync関数の引数やクラスのフィールドには使えない
memortはスタックヒープどっちにも置けるが、指せるのはヒープだけ(スタックのがライフタイムが短いため)
spanはヒープスタック任意のメモリを指せるが、span自体の領域はスタックに確保する必要がある
よってasync関数の引数やクラスのフィールドには使えない
memortはスタックヒープどっちにも置けるが、指せるのはヒープだけ(スタックのがライフタイムが短いため)
843デフォルトの名無しさん (ワッチョイ bf7f-TCem)
2024/11/28(木) 16:26:36.56ID:0Rtkkd450 unsafeは使えない?
844デフォルトの名無しさん (ササクッテロロ Spcb-8bf6)
2024/11/28(木) 16:37:47.84ID:cfBZo9cap 構造体固定長配列
845デフォルトの名無しさん (ササクッテロロ Spcb-8bf6)
2024/11/28(木) 16:39:03.06ID:cfBZo9cap 捕まえたものは絶対手放さない
846デフォルトの名無しさん (ワッチョイ 9f05-4RwW)
2024/11/28(木) 18:25:15.73ID:PIh8QaIU0 無駄な空間だらけになりそやな
まぁ今のメモリー空間自体無駄が多いか
まぁ今のメモリー空間自体無駄が多いか
847デフォルトの名無しさん (スプープ Sd7e-WFUB)
2024/12/01(日) 11:13:11.73ID:yUOzmHmkd 生成AIが正解を出し渋って3日ぐらい話し込んでやっと教えてくれた
もう人間をおちょくる術を学習したみたいだわ
もう人間をおちょくる術を学習したみたいだわ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- 【悲報】SANA、発言撤回拒否 [769931615]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- アラフィフおぢだが、意外と人生悪くない
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 【朗報】スキースノーボードの季節がやってきた!
- 俺性格悪いなって思った瞬間あげてけ
