我有一个对象指向一个双精度数组。 如何迭代数组以提取双精度?如何迭代指向双精度数组的对象?
object data = new object()
func(ref data);
如果你看一下在监视窗口它显示的数据
...
data {double[123]}
我有一个对象指向一个双精度数组。 如何迭代数组以提取双精度?如何迭代指向双精度数组的对象?
object data = new object()
func(ref data);
如果你看一下在监视窗口它显示的数据
...
data {double[123]}
演员对象双打的数组:
double[] array = (double[])data;
然后你就可以访问项目或迭代array:
foreach(double value in array)
//...
if you 知道其双打的阵列可以转换为该类型:
double[] values = (double[])data;
这将引发InvalidCastException
如果data
的类型不是双打的数组。
您可以使用as
操作
double[] array = data as double[];
if(array != null)
{
..
}
它避免了InvalidCastException
,如果data
类型不是double[]
您的数组变得null
。
如果您希望方法的调用者始终传入可迭代的某些类型的数据,并且方法需要迭代它,那么它不应接受类型为object
的参数,它应该接受一个参数类型IEnumerable
,或可能有IEnumerable<T>
与某些特定类型(如double
)。
您应该否只接受object
并尝试投它。这样做并没有正确地向调用者指出他们需要传递一些可以迭代的东西。
另外请注意,你可能并不需要按引用传递对象(使用ref
关键字)。这只对更改引用的对象有用。通常这不合适。如果通过此方法生成新对象,则可能需要返回它,而不是改变参数。
笑,这么简单...谢谢。不知道你可以像这样阵列。仍然有很多要学习。 – user3293361
downvote的原因是什么? –
嗯。我做到了吗?如果我这样做,我不是故意的。由于我在这里是新来者,所以我的能力非常有限。我投了票,这让我等待。我试图再次投票表示它需要15个声望。所以我可能因为沮丧而意外投票,我不是故意的。 – user3293361