C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: オブジェクト参照がインスタンスに設定されていません


(過去ログ 118 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■69200 / inTopicNo.1)  オブジェクト参照がインスタンスに設定されていません
  
□投稿者/ 初心者 (16回)-(2013/12/09(Mon) 18:19:28)

分類:[C#] 

C#の初心者です。

自分のIPアドレスとサブネットマスクを取りたくて、以下のようなコードを書きました。

//-----------------------------------------------------

   private UnicastIPAddressInformation[] ipaddrs;

   public void net()
   {
      NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();

      foreach (NetworkInterface adapter in adapters)
      {
	IPInterfaceProperties ip_prop = adapter.GetIPProperties();
	if (adapter.OperationalStatus == OperationalStatus.Up)
	{
	   IPInterfaceProperties ipips = adapter.GetIPProperties();
	   if (ipips != null)
	   {
	      Int32 i = 0;
	      foreach (UnicastIPAddressInformation ip in ipips.UnicastAddresses)
	      {
		this.ipaddrs[i] = ip;
		i++;
	      }
	   }
	}
      }
   }

//-----------------------------------------------------

するとコンパイル時に、グローバル変数のipaddrsには値が代入されていない旨の警告が表示され、ビルドに失敗します。
どこがおかしいのか教えていただけると助かります。



引用返信 編集キー/
■69201 / inTopicNo.2)  Re[1]: オブジェクト参照がインスタンスに設定されていません
□投稿者/ 魔界の仮面弁士 (456回)-(2013/12/09(Mon) 18:28:53)
No69200 (初心者 さん) に返信
> 警告が表示され、ビルドに失敗します。
警告だけならば、ビルドは通るはずなのですけれどね。

プロジェクトプロパティの[ビルド]-[エラーと警告]で警告レベルを
4 未満にすれば、とりあえず警告は出なくなります。

まぁ、問題個所を無視しているだけなので、実行時に例外が出ますけれどね。



> どこがおかしいのか教えていただけると助かります。
コード中で、一度も
 this.ipaddrs = 何某;
を行っていないのに、
 this.ipaddrs[i] = ip;
が呼び出されているのが問題です。


事前に要素数が分からない場合には、配列ではなく、List<> を用いた方が良いでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -