0

次のエラー メッセージが表示され続けます:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

  private static void GetIPInfo(User user)
  {
      string ipAddress = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();

      string city = string.Empty;
      string region = string.Empty;
      string country = string.Empty;
      double? latitude = -1.00;
      double? longitude = -1.00;

      LocationTools.GetLocationFromIP(ipAddress, out city, out region, out country, out latitude, out longitude);

      user.IPAddress = user.IPAddress; **//error is pointing here**
  }

何かをインスタンス化する必要がありますか?

問題を解決するには、このようなものでしょうか?

 user.IPAddress new user.IPAddress = user.ipAddress;
4

5 に答える 5

1

Jon が指摘したuserように、あなたは null のようです。問題は ではなく、呼び出し方法にあると思いますGetIPInfo。メソッドに引数チェックを追加したい場合があります。また、このメソッドは奇妙に見えると思いますが、なぜそのように見えるのかを理解するための適切なコンテキストがないだけかもしれません。

于 2011-10-17T13:21:12.160 に答える
1

GetIPInfo(User user)を呼び出す方法によって異なります。userとして null を渡しているようです。多分あなたはのようなものを書くべきです

GetIPInfo(new User());

ただし、 User を何らかの方法で初期化する必要があるのか​​、それとも空のインスタンスを作成するだけで十分なのかは明らかではありません。さらに、あなたが何をしようとしているのかわかりませんuser.IPAddress = user.IPAddress; これは、IPAddress のセッターに付随的な効果を引き起こす他のコードがない限り、まったく効果がないように見える命令ですが、これは避けたいものです。

コメントの後に編集:

私が正しければ(しかし、よくわかりません)、これはあなたが本当に必要としているものにより似ているかもしれません:

private static User GetIPInfo() { User user = new User();

  string ipAddress = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();

  string city = string.Empty;
  string region = string.Empty;
  string country = string.Empty;
  double? latitude = -1.00;
  double? longitude = -1.00;

  LocationTools.GetLocationFromIP(ipAddress, out city, out region, out country, out latitude, out longitude);

  user.IPAddress = ipAddress; 
  // other code to fill the other fields of User

  return user;
}

次に、それを呼び出して、変数に割り当てたり、好きなように使用したりできる User の新しいインスタンスを取得できます。

于 2011-10-17T13:17:12.780 に答える
0
于 2011-10-25T10:18:45.250 に答える