我有一个指向双打数组的对象。 如何遍历数组以提取双精度?
object data = new object()
func(ref data);
如果您在观察窗口中查看数据,则会显示...
data {double[123]}
答案 0 :(得分:2)
将对象转换为双精度数组:
double[] array = (double[])data;
然后你可以访问项目或迭代数组:
foreach(double value in array)
//...
答案 1 :(得分:0)
如果您知道它可以转换为该类型的双打数组:
double[] values = (double[])data;
如果InvalidCastException
的类型不是双精度数组,则会抛出data
。
答案 2 :(得分:0)
您可以使用as
运算符
double[] array = data as double[];
if(array != null)
{
..
}
如果InvalidCastException
的类型不是data
您的数组变为double[]
,则会避免null
。
答案 3 :(得分:-1)
如果您希望方法的调用者总是传递某些可以迭代的数据类型,并且该方法需要迭代它,那么它不应该接受object
类型的参数,它应该接受具有某种特定类型(例如IEnumerable
)的IEnumerable<T>
类型或double
类型的参数。
您应该否只接受object
并尝试投射它。这样做并没有正确地向调用者表明他们需要传递一些可以迭代的东西。
另请注意,您可能不需要通过引用传递对象(使用ref
关键字)。这仅对更改引用的对象有用。一般来说这是不合适的。如果通过此方法生成新对象,您可能希望返回它,而不是改变参数。