今日、たまたま自分で作ったソフトいじってたんですが、スタックオーバーフローおこしやがるんですよ。
んで、例外発生箇所みても理由がわからんのです。
ちなみにコードは↓な感じ。
私、これ原因わからなくてしばらく考え込んでしまいました。
結局原因は、this.sock = value;とすべきところをthis.Sock = value;って書いてしまったことなんですよね。
"S"は小文字で書かなきゃいけないのをインテリセンス頼って書いてるもんだから、大文字で書いちゃっても気づかなかったわけです。んで、プロパティに値をセットするときに無限再帰に入っちゃってスタックオーバーフローと・・・_| ̄|○
これは気づきにくいよなぁ・・・。命名規則考え直した方がいいかもしれん・・・。
てか、こういうのはコンパイラで検出して欲しい・・・。
んで、例外発生箇所みても理由がわからんのです。
ちなみにコードは↓な感じ。
class hoge
{
Socket sock;
public Socket Sock
{
set
{
this.Sock = value; // StackOverflowException
}
get
{
return this.sock;
}
}
}
どこがおかしいかわかりますか?私、これ原因わからなくてしばらく考え込んでしまいました。
結局原因は、this.sock = value;とすべきところをthis.Sock = value;って書いてしまったことなんですよね。
"S"は小文字で書かなきゃいけないのをインテリセンス頼って書いてるもんだから、大文字で書いちゃっても気づかなかったわけです。んで、プロパティに値をセットするときに無限再帰に入っちゃってスタックオーバーフローと・・・_| ̄|○
これは気づきにくいよなぁ・・・。命名規則考え直した方がいいかもしれん・・・。
てか、こういうのはコンパイラで検出して欲しい・・・。






