对象引用未设置为对象的实例,null
本文关键字:实例 null 对象 设置 对象引用 | 更新日期: 2023-09-27 18:11:33
我一直得到这个错误消息:对象引用未设置为对象的实例。
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;
你到底希望这句话达到什么效果:
user.IPAddress = user.IPAddress;
我希望它最多是一个no-op。碰巧的是,user
变量的值似乎为空。
不清楚该方法意味着什么,但如果user
为null,则请求未经过身份验证。奇怪的是,GetXyz
方法有一个void
返回类型。应该是PopulateIPInfo
吗?在这种情况下,传递一个空引用听起来像是一个bug——但是你真的需要决定这个方法是用来做什么的……从长远来看,在方法中创建一个新的User
实例不太可能有用。
这取决于您调用GetIPInfo(User User)的方式。似乎您正在传递null作为用户。也许你应该写一些像
这样的东西GetIPInfo(new User());
但是不清楚User是否必须以某种方式初始化,或者创建一个空实例就足够了。此外,我不明白您想用user做什么。这是一条似乎没有任何效果的指令,除非在IPAddress的setter中有一些其他代码导致一些附带效果,但这是我要避免的。
在评论后编辑:
如果我说对了(但我不确定),也许这更类似于你真正需要的:
private static User GetIPInfo(){用户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实例,你可以把它赋值给一个变量或按你喜欢的方式使用
如何:
user = new User; // Or whatever user is supposed to be
user.IPAddress = ipAddress; // Now you can assign an ip address to this property
正如Jon指出的,您的user
似乎是空的。我认为问题是在调用方法,而不是在GetIPInfo
。您可能希望在方法中添加一些参数检查。此外,我认为这个方法看起来很奇怪,但我可能只是没有适当的上下文来理解为什么它看起来像它。
如果请求中没有提供IP地址,则System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
抛出System.NullReferenceException
- “Object reference not set to an
instance of an object.”
-error。因此,您应该检查语句是否抛出异常。