トップページ⇒tech
1001コメント293KB

ふらっとC#,C♯,C#(初心者用) Part79

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/09/21(水) 21:34:56.61
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ

ふらっとC#,C♯,C#(初心者用) Part78
http://hibari.2ch.net/test/read.cgi/tech/1312310658/

■関連スレ
C#, C♯, C#相談室 Part67
http://hibari.2ch.net/test/read.cgi/tech/1308128665/
ミスターサタンのC#相談室 
http://hibari.2ch.net/test/read.cgi/tech/1092656075/
VB.NET質問スレ(Part36)
http://hibari.2ch.net/test/read.cgi/tech/1301828549/
くだすれC++/CLI(初心者用)part2
http://hibari.2ch.net/test/read.cgi/tech/1268613679/
0153デフォルトの名無しさん2011/09/28(水) 14:40:16.06
C#と何の関係があるんだ?
0154デフォルトの名無しさん2011/09/28(水) 16:54:59.06
>>152
phpとかで作った方が早いんじゃね
0155デフォルトの名無しさん2011/09/28(水) 17:00:02.81
>>152
その辺はC#関係ないな
htmlとかweb系の話
0156デフォルトの名無しさん2011/09/28(水) 17:23:38.29
webプログラミング板のASP.NETスレかなあ。ただASP叩きしかしてないけど。
0157デフォルトの名無しさん2011/09/28(水) 17:38:23.42
>>152
http://msdn.microsoft.com/ja-jp/library/cc671436.aspx
とりあずここを見ればいいんじゃね
違ったらすまんのう
0158デフォルトの名無しさん2011/09/28(水) 18:20:30.55
メニューとコンテンツを同じdivに置いてfloat left
0159デフォルトの名無しさん2011/09/28(水) 19:42:18.00
ああそういうことか
ほれ

/* --- コンテンツ ----------------------------------------------------------------------- */
#content {
width: 650px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
float: left;
background-color: #ffffff;
}
/* --- メイン ----------------------------------------------------------------------- */
#main {
width: 500px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
float: left;
background-color: #ffffff;
}
/* --- サイドナビ ----------------------------------------------------------------------- */
#sidenav {
width: 150px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
float: left;
background-color: #ffffff;
}
0160デフォルトの名無しさん2011/09/28(水) 20:02:14.91
大抵floatだけどパディング指定じゃ駄目なんかね

#A{
position:relative;
padding-top:aaa;
padding-left:bbb;
}
#B{
position:absolute;
top:0;
left:0;
width:100%;
height:aaa;
}
#C{
position:absolute;
top:aaa;
left:0;
width:bbb;
}

<div id="A">
 <div id="B">ヘッダー</div>
 <div id="C">メニュー</div>
 <div id="D">コンテント</div>
</div>
0161デフォルトの名無しさん2011/09/28(水) 20:04:08.08
もうあと一桁レス以内で収めてくれよ
0162デフォルトの名無しさん2011/09/28(水) 21:14:23.91
Whileでループしてる子スレッドに、
メインスレッドから任意のメソッドを実行させたいんですが

ループ内に条件分岐つけてフィールド変数を条件にして実行させるくらいしか思いつかないんですが、
もっとスマートな方法ってありませんか?

このイベントを発生させるとこのスレッドの上で動く的な
0163デフォルトの名無しさん2011/09/28(水) 21:16:46.48
>>162
なんで「その」スレッドに拘る必要があるの?
何かスレッドのこと根本的に勘違いしてるんじゃないの?
0164デフォルトの名無しさん2011/09/28(水) 21:22:38.66
>>162
メインスレッドで他のスレッド立ち上げても次の瞬間にJoinしてたらほぼ意味が無い。
設計としては、スレッドにキューを持たせてそのキューに分岐変数をガシガシ突っ込みつつ、
スレッドは頑張って関数を処理するという感じだと思うんだが。。。

並列化したいんであれば、そういう処理を書いて、ワーカースレッドを増やすのがいいだろうね。
0165デフォルトの名無しさん2011/09/28(水) 21:28:55.30
>>162
待機はループ回したりしないでWaitHandle使う
.NET4ならBlockingCollection<T>使えば超簡単
0166デフォルトの名無しさん2011/09/28(水) 21:33:27.60
Dispatcherじゃ駄目なのか
01671622011/09/28(水) 22:01:20.44
MSDN見てたら余計わからなくなってきた
整理して出直します
01681642011/09/28(水) 22:03:47.06
>>166
ダメなことは全くない。
っていうか不勉強で知らなかった。申し訳ない。Orz
0169デフォルトの名無しさん2011/09/29(木) 10:04:33.58
物凄く基本的な質問ですいません。

C#における参照渡しは中身の場所を表し、中身をそのまま渡すのは値渡しになっていますが
http://ufcpp.net/study/csharp/oo_reference.html

C++の参照渡しは内容そのものを渡して、場所を表すのはポインタ渡しと考えてよろしいのでしょうか?
http://www.kab-studio.biz/Programing/Codian/Pointer/06.html

・C#の参照渡し=C++のポインタ渡し
・C#の値渡し=C++の参照渡し
と、いうように思えてきました。

ググっていたらちょっと混乱してきたので、すいませんがよろしくお願いします。
0170デフォルトの名無しさん2011/09/29(木) 10:23:52.00
C#では参照型・値型と参照渡し・値渡しは別概念
C++のポインタ付きとポインタなしが参照型と値型に大体重なる
参照渡しはC++にあった引数で(Hoge& hoge)って書く奴と大体同じ
C++だと参照&はローカル変数とかでも使えたがC#では引数のref/out限定
0171デフォルトの名無しさん2011/09/29(木) 10:26:54.64
>>169
C#で参照型を引数に渡すのは参照渡しじゃないよ。上のサイトにも参照渡しとは書いてないだろ。
変数の場所を渡すのがC#やC++でいう参照渡し。
変数の中身をコピーして渡すのがC#やC++でいう値渡し。
で、値型と参照型の違いは、値型は変数の中身そのものがオブジェクトなのに対して
参照型はヒープ上にあるオブジェクトの識別番号(ハンドル)が変数の中身になる。
0172デフォルトの名無しさん2011/09/29(木) 11:35:29.54
>>170-171
ああっ、参照型と参照渡しは全くの別物なのですか。
ところどころ「参照」「ポインタ」とだけ出てくるので混乱していました。
・変数のアドレスを渡す:参照渡し(参照型=アドレス=ポインタの位置のコピー)
・変数の中身を渡す:ポインタ渡し(ポインタが指定した場所の値を渡す)=値型の渡し
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1320144958
で、大体良いのですね。
ありがとうございました。


>C++ の参照型(&がつくやつ)は、本当に参照です。
>元の値をそっくりそのまま渡すというのが一番しっくりくるイメージです。まさに「参照」。
>#実際は、ポインタの特殊系と言うべき代物ですがw<怒られそうだw
>ちなみに、.NET の参照型と、Native C++ の参照型は、日本語にすれば同じですけど、意味(実装)はまったく違いますw
>#で、こういうこと言うと知らない人は頭抱えてしまうんだwww

>まず、C++でいうと、関数呼び出し時の渡し方って3パターンなることになってる(コーディングスタイル上)。
>・値渡し
>・ポインタ渡し
>・参照渡し
>で、イメージで言うと黒龍さんの言う通り、値渡しとポインタ渡しは結局はものをコピーで渡しているので、「渡し方」において違いはない。
>でも、参照渡しはそれでは説明がつかないので、私の場合は「同じ領域に別名がつくんだよ」と説明します。
http://blogs.wankuma.com/kokuryu/archive/2007/07/25/87015.aspx
0173デフォルトの名無しさん2011/09/29(木) 11:56:16.89
ポインタと考えるからややこしくなるんだよ。
参照型の変数にはオブジェクトのIDが入っている。渡すときにはその値が渡る。それだけ。
0174デフォルトの名無しさん2011/09/29(木) 14:22:50.58
クリックしたつもりがダブルクリックになった時にウインドウが切り離されてしまい困ってます
ソースのタブのフローティングを切る設定はどこですればいいですか?
0175デフォルトの名無しさん2011/09/29(木) 15:17:17.26
値型・参照型の話になると、すぐC++やCと比較して説明する奴多いけど、
余計ややこしいだけだなwww
0176デフォルトの名無しさん2011/09/29(木) 15:24:41.20
まあ質問がそういう感じだったからな
C#やるならC++の記憶は消した方が楽かもね
01771692011/09/29(木) 15:51:41.42
すいません、ちょっとC++のライブラリを使うことになったので、
ポインタ渡しを直接使えるかC++/CLIでクロスライブラリを作るか考えてみたとこだったんです
0178デフォルトの名無しさん2011/09/29(木) 15:57:42.58
横槍ですまんが

>参照型はヒープ上にあるオブジェクトの識別番号(ハンドル)が変数の中身になる。
って事実上は参照渡しじゃないの?
アドレスじゃないから厳密には違うんだろうけど
0179デフォルトの名無しさん2011/09/29(木) 16:04:11.34
参照渡しというのはC#において別機能として存在してるのでその表現は不正
0180デフォルトの名無しさん2011/09/29(木) 16:06:47.83
無理やり「○○言語で言うところの●●」と考えるの止めようよ
0181デフォルトの名無しさん2011/09/29(木) 18:27:29.97
>>178
ポインタや参照渡しの引数が指してるのは場所。
.netのハンドルが指してるのは場所じゃなくてオブジェクトそのもの。全然違う。
0182デフォルトの名無しさん2011/09/29(木) 21:48:25.42
用語がめちゃくちゃw
0183デフォルトの名無しさん2011/09/29(木) 21:53:18.82
オブジェクト参照のトラッキングハンドルの値渡しとでも言って欲しいのか?
0184デフォルトの名無しさん2011/09/29(木) 22:06:16.83
ref StringはString^%だからStringオブジェクトのハンドルの追跡参照の値渡しになるのかな
0185デフォルトの名無しさん2011/09/29(木) 22:44:41.27
>>172
C++で、「ポインター変数の参照渡し」って言われてちゃんと理解できる?
0186デフォルトの名無しさん2011/09/29(木) 22:45:48.55
>>169
http://ufcpp.net/study/csharp/sp_ref.html
こっちも合わせて読んで。
図を特に。
0187デフォルトの名無しさん2011/09/29(木) 22:50:55.56
>>185
C++には参照はあるけど参照渡しなんて用語はないでしょ。
何が「ちゃんと理解できる?」だよ。
後ろ向きに鏡指差してるAA貼られるぞw
0188デフォルトの名無しさん2011/09/29(木) 22:52:35.76
暇だから以下のようなコードを書いてみた。ポインタ変数の参照渡し。
あくまでジョークだからな。

#include <iostream>

void f(int *(&p)){
    *p = 100;
}

int main(){
    int i=0;
    int *p = &i;

    f(p);

    return 0;
}
0189デフォルトの名無しさん2011/09/29(木) 23:00:26.91
>>187
それはでも、「C++ には抽象メソッドはない」(やってることは純粋仮想関数と一緒)という程度の話では。
0190 ◆QZaw55cn4c 2011/09/29(木) 23:05:00.20
>>188
ジョークどころか、わりあいに書きやすい印象を受けました。二重ポインタよりも受け入れやすい、と考える人もいるかも。
http://hibari.2ch.net/test/read.cgi/tech/1277860967/504
http://codepad.org/nHqWWH51
0191デフォルトの名無しさん2011/09/29(木) 23:10:15.48
>>190
C++、書きやすいのは確実に参照渡しの方だけど、
呼び出し側が値渡し(& なし)と区別つかないから、
呼び出し側が気づかずに関数内で値書き換わって嫌だって話も多々ある。
それが結局、関数の引数に参照使わない文化生んでた。
0192デフォルトの名無しさん2011/09/29(木) 23:10:41.14
もうC++のことは忘れろよ
0193デフォルトの名無しさん2011/09/29(木) 23:14:24.28
>>191
呼び出し側が気づかない、っていうのは普通はないでしょ。
そんなことが起こるとしたら、関数の命名もしくは仕様そのものが腐ってる場合だけ。
0194デフォルトの名無しさん2011/09/29(木) 23:16:03.53
っていうか、参照で渡すことを「参照渡し」って言うか?
聞いたことないけど
01951882011/09/29(木) 23:18:48.94
>>190
あらあらあら、実用してる人いるのか。へぇー。

書き換えないときは参照で書き換えるときはポインタ。っていう感じでしか考えたこと無いな。
まー、引数でやってきたポインタを書き換えるのあんまりスキじゃないのだけどね。
0196 ◆QZaw55cn4c 2011/09/29(木) 23:49:12.35
>>191
んー、値渡しの対象がオブジェクトだったりすると、コンストラクタが裏でうごめくのが嫌、というのと、でもポインタを渡すのも嫌、というのとで
int &f(const someclass &a, const someclass &b);
というなんだかよくわからない(わけでもないけれども)やりかたがスタンダードなんですね。最近知りました。
0197デフォルトの名無しさん2011/09/30(金) 00:59:25.29
>>194
C++では変数参照をポインタの値のように扱えるから事情が複雑だけど
参照渡しはごく一般的な言葉だろ
VBのByRefとかまんま
0198デフォルトの名無しさん2011/09/30(金) 05:15:03.06
>>193
ライブラリ使う側はほんと底辺だと思って作ったうえで、
さらにその斜め下をいかれるものよ。

でなきゃ、気づかないなんて心配しない。
0199デフォルトの名無しさん2011/09/30(金) 05:17:53.19
>>196
そうそう、const 付きなら何の問題もない。

それはそれで、const に対応するようにクラス書くのが大変なんだけど。

あと、その const& な引数を COM Interop とかで C# から見ると、
ref だらけになって悲惨なことに。
0200デフォルトの名無しさん2011/09/30(金) 21:52:55.16
VB2005の本を5冊くらい読んで結構理解したつもりの人が
C#を勉強するのにお勧めの本は何?
0201デフォルトの名無しさん2011/09/30(金) 22:16:15.76
VB.NETを完全に理解しているなら勉強する必要なし
MSDNを見ながらいきなり作れるはず
0202デフォルトの名無しさん2011/09/30(金) 22:27:46.68
まっさらな人がC#理解するよりハードル上げたね
ご愁傷様
0203デフォルトの名無しさん2011/09/30(金) 22:42:38.88
細かい文法の違いと、VBにあってC#に無い機能(=VBでも使ってはいけない機能)を知るだけだな
本とかいらん
0204デフォルトの名無しさん2011/09/30(金) 22:53:12.49
C++とかJava、phpなんかのC言語系ランゲージ触っているなら大丈夫だけど
VBのみだとどんなもんなのかな?
0205デフォルトの名無しさん2011/09/30(金) 23:10:55.21
BUILDのアンダースのセッション面白かったな
一応C#とVBの新機能の紹介のはずなのにVB完全無視どころかdisってた
0206デフォルトの名無しさん2011/09/30(金) 23:13:20.34
http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-816T
なんか老けたなw
0207デフォルトの名無しさん2011/09/30(金) 23:19:00.38
LINQ to Objects好きでとにかく使いまくるんだけど、なぜか急にパフォーマンスが気になった。
例えば↓みたいなLINQと2重ループで地道に探すロジックとどっちが処理早いんでしょう?

var ret =
from a in hogeAList
join b in hogeBList on a.Id == b.Id
select a.Name
0208デフォルトの名無しさん2011/09/30(金) 23:19:40.07
2重ループに決まってるでしょう
0209デフォルトの名無しさん2011/09/30(金) 23:20:24.90
C#がいくら進化したって要件がいつまでも2.0だもんげ
0210デフォルトの名無しさん2011/09/30(金) 23:25:48.91
>>207
1・2割、LINQ の方が遅い。

けども、ループで回す方が早いからって、一時配列作ってそれにコピーを作ったりしたら、
今度はメモリ効率悪くなるし、データ量多いと性能も落とす。
0211デフォルトの名無しさん2011/09/30(金) 23:26:17.17
繰り返し頻繁に呼ぶ処理ならループとLINQとか小手先の最適化じゃなくて
ToLookup使うとか考えるべき
0212デフォルトの名無しさん2011/09/30(金) 23:36:08.03
>>207
俺の感覚ではほとんど変わらないと思うけど
微妙に興味があるんで実際に測ってみてくれ
0213デフォルトの名無しさん2011/09/30(金) 23:43:58.23
やっぱりLINQのほうが遅いのか。
でも>>210の言うようにループだと、結果を溜めるための一時配列が必要なんですよね。
結局はLINQは万能ではなく場合によって使い分けろということですか。

だがFindAllメソッドだけはクソ便利すぎるのでどんな時でも使うのをやめない!
JavaもLINQパクって標準仕様にすればいいのに。
0214デフォルトの名無しさん2011/09/30(金) 23:44:08.68
ASP.netとか巨大アプリじゃない限り
メモリ効率や速度より読みやすさが一番大事だったりするよな
0215デフォルトの名無しさん2011/09/30(金) 23:50:22.69
FindAllってLINQ導入で要らなくなってSilverlightで削除された遺物だよ
0216デフォルトの名無しさん2011/09/30(金) 23:54:41.77
>>215
へ?
Listクラスからなくなったことですか?
0217デフォルトの名無しさん2011/10/01(土) 00:11:12.77
Silverlightは必要な機能までごっそり削除してるから比較にならん
0218デフォルトの名無しさん2011/10/01(土) 00:15:15.23
設計ミスだから削除したっていうのもあるよ
ICloneableとか
0219デフォルトの名無しさん2011/10/01(土) 00:48:47.34
オブジェクトのコピーはJavaでも失敗機能の槍玉に挙がってるが
どう設計するのが正しかったんだろうか
0220デフォルトの名無しさん2011/10/01(土) 00:50:04.52
コンストラクタに渡すのが正解
0221デフォルトの名無しさん2011/10/01(土) 00:53:12.46
>>212
1000件のリスト2つでの結果。Stopwatchクラスで計測。
LINQ:00:00:00.0002997
ループ:00:00:10.4558394

LINQのほうが圧倒的に早いんだけど、何か間違ってるのかな・・・。

必要ならソースはりますが。
0222デフォルトの名無しさん2011/10/01(土) 00:58:32.82
>>221
LINQの方、多分クエリ作っただけでクエリを実行してないだろ
0223デフォルトの名無しさん2011/10/01(土) 01:13:55.71
>>222
うあ。その通りです。しにたい。
LINQの結果のToList()メソッド呼べばクエリ実行されますよね?
でもLINQのほうが早い。謎です。

LINQ:00:00:00.0027321
ループ:00:00:00.1062660
0224デフォルトの名無しさん2011/10/01(土) 01:18:26.81
Joinは辞書使って二重ループにならないようにしてる

要するに馬鹿の考え休むに似たり、ある物はどんどん使うべきということだな
0225デフォルトの名無しさん2011/10/01(土) 01:25:11.87
なんか変だと思ったら a.Id equals b.Id だろ
それなら最適化されるのはわかる
==と普通の式みたいに書いてあると素直にラムダ式に変換されてしまって最適化されなそうに見える
0226デフォルトの名無しさん2011/10/01(土) 01:29:49.35
>>224
へ〜。なるほど。ありがとうございます。
>>208,210は嘘ってことですか。
やっと寝れる。
0227デフォルトの名無しさん2011/10/01(土) 01:31:46.91
>>225
あ、そうです。equalsです。
勢いで書いたので == って書いちゃった。

なんかぐだぐだになってすみません。
0228デフォルトの名無しさん2011/10/01(土) 16:27:38.10
>>226
嘘じゃあなくてさ、Joinのやっているようなことをちゃんと再現すれば、
余計なオーバーヘッドがなくて速い。
でも、ちゃんと色々考慮して正しく書ける人って存外少ないんだろうね、
だから、色々考慮してメソッド化されたLINQ to Objectsを使うのが大体正しい。
0229デフォルトの名無しさん2011/10/01(土) 16:33:09.73
このスレIDが出ると面白いのにな
同一人物が連投してるだろう
0230デフォルトの名無しさん2011/10/01(土) 16:37:22.78
>>228
ちゃんと色々考慮したものとLINQを実際に測定してみてくれ
0231デフォルトの名無しさん2011/10/01(土) 17:36:01.67
>>230
http://ideone.com/HkAaw
先行が若干不利なので正しく計るならもっと丁寧にやらなきゃだけど。
あと、結局、要になるのはToLookupなのでそこも自前で書けば、だけどまぁ面倒なので。
0232デフォルトの名無しさん2011/10/01(土) 18:20:16.93
乙
つか両方とも十分な速さだから、これが律速になることは無さそうですね・・・
0233デフォルトの名無しさん2011/10/01(土) 18:22:21.62
IDなら一意だろうからLookupよりDictionaryの方が速いんじゃないの
0234デフォルトの名無しさん2011/10/01(土) 20:06:19.64
あるスレッドが終了の指示がくるまで
whileし続けるありふれた挙動をさせたいとき、
bool is_thread_must_running = true;
と用意して
while(is_thread_must_running)
{
}
というスレッドを外部からis_thread_must_running = false
で終了させるコードをネットで見つけましたが、
単一の変数への読み出しのみ、
書き出しのみはアトミックであると保障されていますか?
(javaはたしかそうだったような気がしますが)

また、is_thread_must_running はここを見る限り、
http://msdn.microsoft.com/ja-jp/library/x13ttww7.aspx
volatile にすべきですよね?
0235デフォルトの名無しさん2011/10/01(土) 20:21:04.88
参照型と32ビット未満のサイズのプリミティブ型の変数の読み出しと書き込みはアトミック
volatileは必要
02362352011/10/01(土) 20:21:54.60
32ビット以下に訂正
0237デフォルトの名無しさん2011/10/01(土) 20:25:18.95
>>235-236
なるほど、ありがとうございました!
0238デフォルトの名無しさん2011/10/01(土) 20:51:45.29
Javaのcomparaterに該当するメソッドってなに?
0239デフォルトの名無しさん2011/10/01(土) 20:54:46.51
IComparer<T>インターフェイスかComparison<T>デリゲート
0240デフォルトの名無しさん2011/10/01(土) 22:36:28.75
非同期ソケット通信でタイムアウトを実装したいんですが
Timerなんかで定期的に監視して、指定の時間経ったらSocket.shutdown()とClose()したら良いんですかね
それとも同期ソケットを別のスレッドで実行する形が定石なんでしょうか
0241デフォルトの名無しさん2011/10/01(土) 23:42:45.25
後者だろうなー
0242デフォルトの名無しさん2011/10/02(日) 19:47:52.17
namespace N1 { namespace N2 { class C {} } }

という名前空間の中のクラスを、N1だけ省略して N2.C と書いて使いたいです。
ソースコードの先頭に using N1; を書いたのですが、ダメでした。
完全に N1.N2.C と書くか、using N1.N2; として C と書くしかないですか?
0243デフォルトの名無しさん2011/10/02(日) 19:56:29.29
using n2 = n1.n2;
0244デフォルトの名無しさん2011/10/03(月) 00:05:43.24
ランダムで+1か−1を返すメソッドってない?
0245デフォルトの名無しさん2011/10/03(月) 00:09:01.36
>>244
ランダムで数値作って奇数は-1偶数は+1とかやれば?
0246デフォルトの名無しさん2011/10/03(月) 00:11:21.11
random.Next(2) == 0 ? -1 : 1とか
スクリプト言語っぽく(new[]{-1,1})[random.Next(2)]とか
0247デフォルトの名無しさん2011/10/03(月) 00:17:03.93
>>246
==0と!=0は半々の確率なの?
0248デフォルトの名無しさん2011/10/03(月) 00:20:54.68
引数が2なら0か1の一様分布
0249デフォルトの名無しさん2011/10/03(月) 01:09:11.50
>>240 ttp://hibari.2ch.net/test/read.cgi/tech/1293284816/540
の人?まだ困ってたんだw
0250デフォルトの名無しさん2011/10/03(月) 18:51:44.80
EventArgsオブジェクトとかのイベントオブジェクトあるじゃん
たとえば、イベントオブジェクトを大量に発行するプログラム(ゲームとか)動かすときにメモリ使いすぎてボトルネックになるってことはないの?
メモリ食って動きが鈍くなるとか、ガベージコレクションが頻繁に起こって動きがカクカクするとかしないのかな?


0251デフォルトの名無しさん2011/10/03(月) 19:12:05.75
そういうオブジェクトは一瞬で不要になるので0世代GCで回収される
第0世代のGCは頻繁に動くけど非常に高速
重いのは中途半端に長生きするオブジェクトが引き起こす上の世代のGC
0252デフォルトの名無しさん2011/10/03(月) 19:45:02.09
へ〜 知らんかった
■ このスレッドは過去ログ倉庫に格納されています