C# 处置全局对象数组以重用对象
我的表单中有一个全局对象数组。我想多次更改数组长度。因此,我需要处理它和新的不同长度 如下代码来自 我有一个错误: 错误1无法将类型“business.person.clssHeadCustomer[]”转换为“System.IDisposable”D:\acc2012\acc2012\WindowsFormsApplication1\hesabdari\frmCustomer.cs 80 14演示文稿 现在我该怎么办 在C#中,有一种数组称为a,它不需要固定长度C# 处置全局对象数组以重用对象,c#,arrays,object,global-variables,C#,Arrays,Object,Global Variables,我的表单中有一个全局对象数组。我想多次更改数组长度。因此,我需要处理它和新的不同长度 如下代码来自 我有一个错误: 错误1无法将类型“business.person.clssHeadCustomer[]”转换为“System.IDisposable”D:\acc2012\acc2012\WindowsFormsApplication1\hesabdari\frmCustomer.cs 80 14演示文稿 现在我该怎么办 在C#中,有一种数组称为a,它不需要固定长度 List<clssHea
List<clssHeadCustomer> myList = new List<clssHeadCustomer>();
您的错误是无法将列表强制转换为
IDisposable
,因为它(或它的基类)没有实现它,所以这两种类型之间没有有效的转换,IDisposable的示例实现如下
class MyClass : IDisposable
在您的示例中,之所以会出现此错误,是因为您强制未实现IDisposable的对象像实现IDisposable一样运行,然后尝试调用其Dispose方法。它没有这样的方法,所以你不能调用它 如果数组中的对象实现了Dispose方法,那么应该调用它们。还可以将数组项设置为null,这样数组就不会引用对象。例如:
for (int i = 0; i < my_array.Length; i++)
{
my_array[i].Dispose(); // Don't do this if the object's don't have Dispose.
my_array[i] = null;
}
for(int i=0;i
数组本身没有实现Dispose方法,因此无法为数组调用它。无论如何,你真的不需要这么做。数组本身只是一块内存,实际上不需要处理。我们对
clssHeadCustomer
列表一无所知,因此不知道它是否实现了Dispose
。即使cast表明没有使用此类dispose,也不能明确地说不存在dispose方法。我怀疑OP在需要处理数组的其他语言中有一些经验方法return clssHeadCustomer是array。这意味着clssHeadCustomer是数组。那么对于“myList.AddRange(cu.searchName(txtSearch));”我应该怎么做呢?快捷方式是在它的末尾添加一个ToList()
,cu.searchName…ToList()
class MyClass : IDisposable
for (int i = 0; i < my_array.Length; i++)
{
my_array[i].Dispose(); // Don't do this if the object's don't have Dispose.
my_array[i] = null;
}