繁体   English   中英

如何遍历指向双精度数组的对象?

[英]How to iterate through an object that is pointing to array of doubles?

我有一个指向双精度数组的对象。 如何遍历数组以提取双打?

object data = new object()
func(ref data);

如果您在监视窗口中查看数据,则会显示...

data {double[123]}

将对象转换为双精度数组:

double[] array = (double[])data;

然后,您可以访问项目或遍历数组:

foreach(double value in array)
   //...

如果您知道其为双精度数组,则可以强制转换为该类型:

double[] values = (double[])data;

如果data类型不是双精度数组,则将抛出InvalidCastException

您可以as运算符

double[] array = data as double[];
if(array != null)
{
   ..
}

它避免了InvalidCastException ,如果data类型不是double[]数组变为null

如果您希望方法的调用者总是传递一些可以迭代的数据类型,并且该方法需要对其进行迭代,则它不应接受object类型的参数,而应接受IEnumerable类型的参数,或可能是具有某些特定类型(例如double )的IEnumerable<T>

应该只接受一个object ,并尝试投它。 这样做不能正确地向方法的调用者表明他们需要传递可以迭代的内容。

还要注意,您可能不需要通过引用传递对象(使用ref关键字)。 这仅对更改引用的对象有用。 通常这是不合适的。 如果此方法生成了一个新对象,则可能要返回它,而不是更改参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM