君は実にばかだな
もうちょっとC#っぽく
こういうソース見たんだけど、C#ではありなの?
private void hoge() {
ClassHoge hoge = new ClassHoge();
return hoge;
}
C的な考えだと、hogeはスタックに存在するからそれを返しても使えなさそう
なんだけど。
ごめん関数の方がvoidじゃだめだね。
private ClassHoge hoge() {
ClassHoge hoge = new ClassHoge();
return hoge;
}
>>954-955 大丈夫。
基本的にクラスの型で作ったものは宣言した瞬間にヒープに取られるので問題ない。
参照切れたらGCに回収されるからdisposeが必要なもの以外は後始末も特にない。
なるほど、勉強になります。
変数 ClassHoge hoge はスタックに作られるけど、
オブジェクト new ClassHoge() はヒープに作られて、
変数は ClassHoge hoge はヒープにあるオブジェクトの
実体を参照してるだけ、ってことでおk?
ClassHoge*の*が省略されてると思えばC++と一緒
わかってないのに無理して物を言わない方が....
参照型も値型もヒープに取られるんじゃないっけ?
ポインタだけスタックだとポインタのポインタを返したときに壊れるんじゃ
基本的なことは本読んだっきり現象として観察できないから忘れる一方だな
>>962 値型はスタック。
参照型の中に入れ子になってる値型とかと勘違いしてない?
返り値が参照返しが前提なのが間違ってる
c#に参照返しはない。参照型だろうと値型だろうと常に値返し。
参照型の場合は参照の値(ポインタのようなもの)がコピーされる。つまり
>>960。
ダメなのはスタックへの参照を返すことであって、
>>955は仮にスタックに取られるとしても値返しならcでもc#でも問題ないぞ
はぁ?
参照返しとか値返しって新鮮な響きですね
Hoge getHoge() { Hoge hoge; initHoge(&hoge); return hoge; }
これはCでも別に問題ないだろ? C#ではHogeが構造体の場合に相当。
ダメなのはこれ
Hoge* getHoge() { Hoge hoge; initHoge(&hoge); return &hoge; }
これを無理やりC#っぽく書けばこんなイメージ
ref Hoge getHoge() { Hoge hoge = new Hoge(); return ref hoge; }
戻り値にref書けるのか?
無知が無理に語らなくていいよ無駄だから
w
彼の言う参照返しが出来る言語って存在するのか?
refとoutって違うのん?
C++
.NETでもC++/CLIはClassHoge^%(C#のref ClassHoge)とか返せるな
普通にある
スタックかヒープかは言語仕様で決まってる?
それとも単なる今の実装の話?
>>978 スコープの関係とかでどっちに置いてあるかという
傾向はあるよね
ローカル変数はそれ自体は参照型だろうと値型だろうと全部スタック
参照型をnewしたら実体はヒープ
ただしyieldやクロージャ使うとローカル変数がヒープに作られる場合がある
それだけ。言語仕様。
次スレよろ
>>976 refって使うなら、呼び出し元が確保したエリアじゃないと意味変わってくるだろ
983 :
980:2011/09/22(木) 21:02:06.25
ほんなら立てるからテンプレよろしくな
うめ
まだ早い
TCPListnerをつかってチャットアプリ作りたいんですが、
やっぱり同時に接続受け付けるのは難しいんですか?
Socketクラスを使って非同期通信をするのが定番みたいだけど、
難しいとかでちょっと手を付けにくい
難しいの基準がどこにあるかわからないから答えようがない。
それをC++でやるとかよりははるかに簡単だけども。
マルチスレッドのことを言っているなら、
クリティカルセクションと、
WindowsのUI要素はUIスレッドからしか使えないことだけ注意すればそれほど難しくない
とりあえず難しいか難しくないかの話をしてる間は雲を掴むようなもんだ
うめ
996 :
デフォルトの名無しさん:2011/09/23(金) 21:01:40.49
// /: : : : : : : : : : : : : : : : \
/ l /: : : : : ∧: : : : : : : ∧: : : : : \
/ | / : : ―|/- 、\ : : : /_,,.斗: : : : : : :.
《__ |/: : : : : /,x:=ミ、 \/x=ミ、ハ: : : : : : :|
` ー. : : : : : : 〃んィi んィi Y|: : : : ∧|
ヽl: : : : : : 从弋:り 弋:り 从: : :/
|:V{\;/:| , ハ|V
|: :\|: : | "" ""}:|
/´ ̄`\ : |: :|: : | ー〜 ノ: :|
ヽ|: : ,: : :≧ .. __ . イ|: : :.
}: :∧: : :. {: : /: : :| '、: : \
キ >_;∧: : :. V____|_\: : :\
ノ !⌒ヾ|: : :|_ /::::::(__)::\\: : :ヽ
コ |ハ :|: : :|/(__)::::::::::::::(_\: : : |
! | || |: :/::::::::::::::::::::::(__)::::::::/^ヽ: |
ノ || |「{/⌒つ⌒ヽ:::::::::::::::::::{ /}:|
産め
うめ
うめ
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。