我使用了两个类“地址”和“请求”的Web服务。请求对象的一个属性是地址对象数组:
request _req = new request();
_req.addresses = // expecting address[]
我知道我做错了(因为我不断出现异常错误),所以我希望有人可以帮助我。如何创建地址对象数组并将“_req.addresses”值设置为等于该对象(address [])?当我试图将城市值设置为等于字符串_q.LocationA.City时,我在第二行得到“对象引用没有设置为实例...”错误...所以这些都不起作用:
address[] _address = new address[1];
_address[0].city = _q.LocationA.City;
_address[0].state = _q.LocationA.State;
_address[0].street = _q.LocationA.Address;
_address[0].zipCode = _q.LocationA.Zip;
request _req = new request();
_req.addresses = _address;
我试过这个:
address _address = new address();
_address.city = _q.LocationA.City;
_address.state = _q.LocationA.State;
_address.street = _q.LocationA.Address;
_address.zipCode = _q.LocationA.Zip;
request _req = new request();
_req.addresses[0] = _address;
答案 0 :(得分:9)
您的类需要与数组分开实例化。 C#不会自动调用您的构造函数,因此这就是您在第一组代码中获得NullPointerException的原因。第二个代码失败,因为你给它一个对象,而不是一个数组。
你基本上需要将两者结合起来:
address[] _address = new address[1];
_address[0] = new address();
_address[0].city = _q.LocationA.City;
_address[0].state = _q.LocationA.State;
_address[0].street = _q.LocationA.Address;
_address[0].zipCode = _q.LocationA.Zip;
request _req = new request();
_req.addresses = _address;
答案 1 :(得分:2)
在第一个代码块中,您没有在数组的第一个元素中创建新的address
对象;因此,当您尝试设置城市成员时,空引用异常。解决这个问题的方法是:
address[] _a = new address[1];
_a[0] = new address();
_a[0].city = ...
在第二个代码块中,您没有在_req.addresses
成员中创建数组。解决方法是:
...
_req.addresses = new address[1];
_req.addresses[0] = _address;
希望这有帮助!
答案 2 :(得分:1)
变化:
address[] _address = new address[1];
_address[0].city = _q.LocationA.City;
_address[0].state = _q.LocationA.State;
_address[0].street = _q.LocationA.Address;
_address[0].zipCode = _q.LocationA.Zip;
要:
address[] _address = new address[1];
_address[0] = new address();
_address[0].city = _q.LocationA.City;
_address[0].state = _q.LocationA.State;
_address[0].street = _q.LocationA.Address;
_address[0].zipCode = _q.LocationA.Zip;
答案 3 :(得分:0)
我建议你使用通用列表:
List<address> _addresses = new List<address>();
_addresses.Add(_address);
request _req = new request();
_req.addresses = _addresses;
答案 4 :(得分:0)
使用System; 使用System.Collections.Generic; 使用System.Linq; 使用System.Text;
命名空间ConsoleApplication1 { 公共类地址 { 公共街道街; 公共字符串城市; 公共字符串状态; public string ZipCode; }
public class Request
{
public Address[] address;
}
class Program
{
static void Main(string[] args)
{
Address[] address = new Address[]{ new Address {
Street = "140 sw 8 st",
City = "Miami",
State = "Florida",
ZipCode = "33122"}};
Request req = new Request();
req.address = address;
}
}
}