这个数组有什么问题为什么总是提示“未将对象引用设置到对象的实例。”

chenou851123 2011-10-20 11:03:11
public partial class _modifyProductCategory {

private int productIDField;

private int categoryNoField;

private int subCategoryNoField;

private int[] arrayProductTypeNoField;

/// <remarks/>
public int productID {
get {
return this.productIDField;
}
set {
this.productIDField = value;
}
}

/// <remarks/>
public int categoryNo {
get {
return this.categoryNoField;
}
set {
this.categoryNoField = value;
}
}

/// <remarks/>
public int subCategoryNo {
get {
return this.subCategoryNoField;
}
set {
this.subCategoryNoField = value;
}
}

/// <remarks/>
public int[] arrayProductTypeNo {
get {
return this.arrayProductTypeNoField;
}
set {
this.arrayProductTypeNoField = value;
}
}
}



modifyProductCategory = new _modifyProductCategory[1];

modifyProductCategory[0].productID = Convert.ToInt32(productIds); 这一句提示:“未将对象引用设置到对象的实例”
modifyProductCategory[0].categoryNo = catId;
modifyProductCategory[0].subCategoryNo = subCatId;


请问大家是为什么啊为什么。
...全文
187 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenou851123 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 linus2008117 的回复:]
引用 13 楼 chenou851123 的回复:

引用 9 楼 linus2008117 的回复:
引用 6 楼 chenou851123 的回复:

引用 4 楼 linus2008117 的回复:
using System.Linq.

IList list;

if (list != null) list.ToArray();


我需要转换为自定义类的数组(m……
[/Quote]

嗯一个是WebService 返回的结构,另外一个是我自己定义的Model,虽然结构相同,但是好像不能转换。
chenou851123 2011-10-21
  • 打赏
  • 举报
回复
感谢huangwenquan123 让我知道数组定义数组大小之后,还要去循环给每一实例化,根本解决了我的问题。

感谢beyond_me21 提供另外一种解决方法。

感谢linus2008117让我知道Ilist不能转化为自定义类型的数组。
linus2008117 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chenou851123 的回复:]

引用 9 楼 linus2008117 的回复:
引用 6 楼 chenou851123 的回复:

引用 4 楼 linus2008117 的回复:
using System.Linq.

IList list;

if (list != null) list.ToArray();


我需要转换为自定义类的数组(modifyProductCategory ),ToArr……
[/Quote]

相同的类 mod.modifyProductCategory interface.modifyProductCategory 是两个不同类
阿非 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 chenou851123 的回复:]
modifyProductCategory[0].productID = Convert.ToInt32(productIds); 这一句提示:“未将对象引用设置到对象的实例”
[/Quote]

看看是modifyProductCategory[0]为null了还是productIds为null了

Convert.ToInt32(productIds);

可改成

int.TryParse的方式
chenou851123 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 linus2008117 的回复:]
引用 6 楼 chenou851123 的回复:

引用 4 楼 linus2008117 的回复:
using System.Linq.

IList list;

if (list != null) list.ToArray();


我需要转换为自定义类的数组(modifyProductCategory ),ToArray()过后可以强制转换为modifyProductC……
[/Quote]

我填充了定义的Ilist集合,最后ToArray()显示:无法把自定义类型Model._modifyProductCategory[]转化为对方给我定义的interface._modifyProductCategory[]自定义类这样转换不行吧
huangwenquan123 2011-10-21
  • 打赏
  • 举报
回复
modifyProductCategory = new _modifyProductCategory[1];
modifyProductCategory[0]=new _modifyProductCategory();
modifyProductCategory[0].productID = Convert.ToInt32(productIds); modifyProductCategory[0].categoryNo = catId;
modifyProductCategory[0].subCategoryNo = subCatId;
beyond_me21 2011-10-21
  • 打赏
  • 举报
回复
没注意那个地方
把那句改成如下再看看

if (lastCatId.IndexOf(";") > -1)
{
string[] arrlastCatId = lastCatId.Split(';');
            int[] productTypeNo;
for (int j = 0; j < arrlastCatId.Length; j++)
{
productTypeNo[j]=Convert.ToInt16(arrlastCatId[j]);;
}
arr.arrayProductTypeNo=productTypeNo;
}

chenou851123 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 beyond_me21 的回复:]
这样试试呢

C# code


_modifyProductCategory[] arrModifyProductCategory = null;

if (productIds.IndexOf(";") > -1)
{
string[] arrProduct = produ……
[/Quote]

这样用这句会报错:arr.arrayProductTypeNo[j] = Convert.ToInt16(arrlastCatId[j]);
未将对象引用设置到对象的实例
linus2008117 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenou851123 的回复:]

引用 4 楼 linus2008117 的回复:
using System.Linq.

IList list;

if (list != null) list.ToArray();


我需要转换为自定义类的数组(modifyProductCategory ),ToArray()过后可以强制转换为modifyProductCategory 这个数组吗
[/Quote]

IList<modifyProductCategory >
ToArray 就是 modifyProductCategory[]
beyond_me21 2011-10-21
  • 打赏
  • 举报
回复
这样试试呢

_modifyProductCategory[] arrModifyProductCategory = null;

if (productIds.IndexOf(";") > -1)
{
string[] arrProduct = productIds.Split(';');

for (int i = 0; i < arrProduct.Length; i++)
{
_modifyProductCategory arr=new _modifyProductCategory();
arr.productID = Convert.ToInt16(arrProduct[i]);
arr.categoryNo = catId;
arr.subCategoryNo = subCatId;

if (lastCatId.IndexOf(";") > -1)
{
string[] arrlastCatId = lastCatId.Split(';');
for (int j = 0; j < arrlastCatId.Length; j++)
{
arr.arrayProductTypeNo[j] = Convert.ToInt16(arrlastCatId[j]);
}
}
else
{
arr.arrayProductTypeNo[0] = Convert.ToInt16(lastCatId);
}
arrModifyProductCategory[i]=arr;
}
}
else
{
_modifyProductCategory arrm=new _modifyProductCategory();
arrm.productID = Convert.ToInt16(productIds);
arrm.categoryNo = catId;
arrm.subCategoryNo = subCatId;

if (lastCatId.IndexOf(";") > -1)
{
string[] arrlastCatId = lastCatId.Split(';');
for (int j = 0; j < arrlastCatId.Length; j++)
{
arrm.arrayProductTypeNo[j] = Convert.ToInt16(arrlastCatId[j]);
}
}
else
{
arrm = Convert.ToInt16(lastCatId);
}
arrModifyProductCategory[0]=arr;
}

lnmhfeng 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 aykkk 的回复:]

modifyProductCategory = new _modifyProductCategory[1];

你的定义语句有问题

应该如下这样的:
int[] a=new int[2];
a[0]=22;
a[1]=33;
[/Quote]
你只是定义了一个数组对象,但是这个数组里并没有元素,你还要对元素进行初始化。
例如:

modifyProductCategory = new _modifyProductCategory[1];
modifyProductCategory[0] = new _modifyProductCategory();
modifyProductCategory[0].productID = Convert.ToInt32(productIds);
modifyProductCategory[0].categoryNo = catId;
modifyProductCategory[0].subCategoryNo = subCatId;
chenou851123 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 linus2008117 的回复:]
using System.Linq.

IList list;

if (list != null) list.ToArray();
[/Quote]

我需要转换为自定义类的数组(modifyProductCategory ),ToArray()过后可以强制转换为modifyProductCategory 这个数组吗
aykkk 2011-10-21
  • 打赏
  • 举报
回复
modifyProductCategory = new _modifyProductCategory[1];

你的定义语句有问题

应该如下这样的:
int[] a=new int[2];
a[0]=22;
a[1]=33;
linus2008117 2011-10-21
  • 打赏
  • 举报
回复
using System.Linq.

IList list;

if (list != null) list.ToArray();
chenou851123 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuchaolin 的回复:]

你的调用有问题,数组需要固定长度,操作起来不是很方便,所以我们经常用List<>或Dictionary<,>来代替数组
[/Quote]对方要求我必须返回数组类型,请问有什么办法能将ilist转化为我自定义的数组类型阿?
wosizy 2011-10-20
  • 打赏
  • 举报
回复
productIds 在哪里定义的??
代码跟踪到modifyProductCategory[0].productID = Convert.ToInt32(productIds)这句
看下值
md5e 2011-10-20
  • 打赏
  • 举报
回复
你的调用有问题,数组需要固定长度,操作起来不是很方便,所以我们经常用List<>或Dictionary<,>来代替数组

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧