2009-03-11 8 views
0

、私は次のコードを使用しています:で使用しています可能System.Net.IPAddressインスタンスを取得するために非同期接続

IPAddress localaddress=IPAddress.Parse("127.0.0.1"); 

を:

IPEndPoint ip= new IPEndPoint(localaddress,5555); 

私はしかし、というエラーを取得しています:

A field initializer cannot reference the nonstatic field, method, or property 'WindowsApplication1.lanmessenger.localaddress' . 

助けてください。

答えて

1

私はあなたのコードを推測しているが、次のようになります。

public class lanmessenger { 
    IPAddress localaddress=IPAddress.Parse("127.0.0.1"); 
    IPEndPoint ip= new IPEndPoint(localaddress,5555); 

    public lanmessenger(){ 
    ... 
    } 
} 

ここでの問題は、コンパイラは、あなたが初期化フィールドにあなたがしている方法を使用したくないということです。 localaddressを使用してipを初期化していますが、これはコンパイラの将来の見通しからは問題です。これを回避するには、2つの方法:

インラインそれ:

IPEndPoint ip= new IPEndPoint(IPAddress.Parse("127.0.0.1");,5555); 

それとも、コンストラクタでそれを行うには:(一般的に良い)

public class lanmessenger { 
    IPAddress localaddress; 
    IPEndPoint ip; 

    public lanmessenger(){ 
    this.localaddress = IPAddress.Parse("127.0.0.1") 
    this.ip = new IPEndPoint(localaddress,5555); 
    } 
} 
+0

そう私はthat..Usedに最初の選択肢を推論し、その働き。 ありがとうございました。 – Avik

+0

問題はありません。 :) – Patrick

関連する問題