2017-02-20 17 views
0

私は、ユーザーからの入力(姓、名字、電話番号)を入力してテキストファイルに保存し、それをa Windowsフォーム。私は、プログラムを起動したときに、現在、私は、このメソッド内でStackOverflowExceptionが出ます:ビジュアルスタジオ2015デバッグ終了コード0x800703e9

public string Phone 
    { 
     get { return Phone; } 
     set 
     { // VS says that StackOverflowException happens here 

      if (value.Length == 10) 
      { 
       Phone = value; 
      } 

      else 
      { 
       Phone = "0000000000"; 
      } 
     } 
    } 

は、私は、テキストファイルから電話番号を読み取るしようとすると、例外が発生したと考えています。次のコードは、Readメソッドからです。しかし

   foreach (var line in lines) 
       { 
        string[] entries = line.Split('`'); 

        Contact newContact = new Contact(); 

        newContact.FirstName = entries[0]; 
        newContact.LastName = entries[1]; 
        newContact.Phone = entries[2]; //I think exception happens here 

        contactList.Add(newContact); 

、私はその行にブレークポイントを入れて、私はラインPhone = value;Phoneにカーソルを合わせると、VSが約6秒後にデバッグモードを終了し、デバッグモードに入るとき。

ContactsList.vshost.exe '(マネージド(v4.0.30319))::ロード ' C:\ WINDOWS \ Microsoft.Net \アセンブリ\のGAC_MSIL私はPhoneを置いて、VSはデバッグモードを終了した後、これが出力されます\ System.Configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Configuration.dll '、 読み込み中の記号をスキップします。モジュールが最適化され、デバッガオプション 「My Just Code」が有効になります。 プログラム '[5200] ContactsList.vshost.exe:Managed(v4.0.30319)'がコード-2147023895(0x800703e9)で終了しました。

私が試した多くのソリューションは、(別の設定を有効化/無効化、クリーニング、ソリューションを再構築し、VSの再起動)が、私の人生のために私は問題を把握することはできません。出口コード0x800703e9を探してみましたが、今でもそれが何であるか、私が知っているのは、StackOverflowExceptionと何か関係があることです。この問題の解決策はありますか?

答えて

4

Phoneプロパティに値を割り当てると、そのセッターがトリガーされ、セッターで同じ変数に値を再度割り当てたので、同じトリガーに戻り、プロセスが続行されます。

private string _Phone; 
public string Phone 
{ 
    get { return _Phone; } 
    set 
    { // VS says that StackOverflowException happens here 

     if (value.Length == 10) 
     { 
      _Phone = value; 
     } 

     else 
     { 
      _Phone = "0000000000"; 
     } 
    } 
} 

あなたがそれらを格納している値を割り当てながらので、ここではバックアッププロパティを使用しているので、今、あなたは、このような再帰的な割り当てから安全である:だからあなたのコードは、無限の割り当ては、次のようにバックアップのプライベートプロパティを使用して生成されます_Phoneから値を取得し、_Phoneからget

+0

を取得していただき、ありがとうございました。しかし、デバッガの問題はどうですか?何が出口コードを引き起こすのか知っていますか? – TripleA

関連する問題