掲示板お問い合わせランダムジャンプ



この広告は60日以上更新がないブログに表示されております。 新しい記事を書くことで広告を消すことができます。

2005年01月20日
スタックオーバーフローのお話
今日、たまたま自分で作ったソフトいじってたんですが、スタックオーバーフローおこしやがるんですよ。
んで、例外発生箇所みても理由がわからんのです。
ちなみにコードは↓な感じ。
class hoge
{
    Socket sock;

    public Socket Sock
    {
        set
        {
            this.Sock = value; // StackOverflowException
        }
        get
        {
            return this.sock;
        }
    }
}
どこがおかしいかわかりますか?
私、これ原因わからなくてしばらく考え込んでしまいました。

結局原因は、this.sock = value;とすべきところをthis.Sock = value;って書いてしまったことなんですよね。
"S"は小文字で書かなきゃいけないのをインテリセンス頼って書いてるもんだから、大文字で書いちゃっても気づかなかったわけです。んで、プロパティに値をセットするときに無限再帰に入っちゃってスタックオーバーフローと・・・_| ̄|○
これは気づきにくいよなぁ・・・。命名規則考え直した方がいいかもしれん・・・。

てか、こういうのはコンパイラで検出して欲しい・・・。
[ 投稿者:名無し at 20:42 | ソフト開発関連 | コメント(1) | トラックバック(0) ]

この記事へのコメント
無題
プロパティで使うメンバ変数などは
_sockのように頭にアンダーバーを付けるのが一般的ですね
投稿者: 名無しさん at 2010-07-06 01:33:22

この記事へのトラックバック

この記事へのトラックバックURL
http://shinshu.fm/MHz/95.83/a01781/0000025329.trackback

この記事の固定URL
http://shinshu.fm/MHz/95.83/archives/0000025329.html

記事へのコメント
 
認証コード:
画像に表示されるコードを半角英数字で入力して下さい。画像が読み難い場合はこちら
簡単演算認証: 8 x 6 =
計算の答えを半角英数字で入力して下さい。
名前: [必須]
URL/Email:
タイトル:
コメント:
※記事・コメントなどの削除要請はこちら