转换时错误,增强了使用 java 到 c# 的循环
本文关键字:java 循环 错误 增强 转换 | 更新日期: 2023-09-27 17:56:23
我尝试在我的 C# 代码中增强 Java 代码的 for 循环:
for (float value : array) {
if (Float.isInfinite(value) || Float.isNaN(value)) {
value = 0;
}
}
我试过了:
foreach (float value in array)
{
if (float.IsInfinity(value) || float.IsNaN(value))
{
value = 0;
}
}
但是我有这个错误告诉我我无权修改值,因为它是一个迭代变量。
如果要更新迭代器变量,则需要使用法线 for 循环:
for(int i = 0 ; i < array.Length; i++)
{
if (float.IsInfinity(array[i]) || float.IsNaN(array[i]))
{
array[i] = 0;
}
}
从 C# 规范:
迭代变量对应于具有 扩展到嵌入语句的范围。在执行期间 foreach 语句,迭代变量表示集合 元素,当前正在为其执行迭代。一个 如果嵌入语句尝试修改,则会发生编译时错误 迭代变量(通过赋值或 ++ 和 -- 运算符)或 将迭代变量作为 ref 或 out 参数传递。