如何在C#中使用While循环中的.pop()方法?

沙里科夫·弗拉迪斯拉夫(Sharikov Vladislav)

我可以用JS或PHP做到这一点:

while(var input = inputs.pop()) {
// do some bad things with input
}

我在C#上尝试相同,但失败了:

Stack<double[]> localInputs = new Stack<double[]>();
for (int i = 0; i < inputs.Length; i++)
{
    localInputs.Push(inputs[i]);
}
while (input = localInputs.Pop()) // this cause error about converting double to bool
{
// do some bad things on c#
}

我该怎么做?为什么我不能这样做?Assign应该返回布尔值,不是吗?

鲁弗斯·L

“分配应该返回布尔值,不是吗?” &“为什么我不能这样做?”

没有。赋值的结果是分配的值,而不是布尔值(好吧,除非您要进行布尔值赋值。但是即使那样,它也与赋值是否成功无关)。换句话说,Assignment:的值var x = someStack.Pop()是分配给的对象x因此,您无法执行此操作的原因是,您分配给布尔类型的类型没有隐式转换(即使存在,也不会意味着您想要的含义)。

例如:

var tmp = "Hello";
Console.WriteLine(tmp = "Goodbye"); // Write the output of an assignment to Console

// Note that the result of the assignment is 'Goodbye', not 'true'

另外,请注意,尝试.Pop()清空堆栈会抛出InvalidOperationException,这也不是您想要的while条件。

“我怎样才能做到这一点?”

相反,您需要使用该.Count属性来确定是否有任何对象要弹出,然后在while循环内进行弹出。

while (localInputs.Count > 0)
{
    var input = localInputs.Pop();
    // do some bad things on c#
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在循环中使用匿名方法实例化唯一委托(在C#中)?

使用for循环的pop()方法

如何在循环中使用递归方法退出循环?

C#如何在while循环中从另一个类调用void方法

如何在节点列表的for循环中使用match()方法

如何在 for 循环中使用 Javascript .replace() 方法?

如何在C#的foreach循环中调用GetEnumerator方法?

如何在while循环中将数据读取器中的值传递给C#中的方法

在while循环中使用BufferedReader ready方法确定EOF?

在while循环中使用sleep()的替代方法?

如何在循环中使用selection.filter方法将D3选择分组

如何在 TParallel.&For 循环中使用线程安全对象的数据和方法?

如何在void方法中使用循环中的变量值

如何在命令的 for 循环中使用变量?(C#)

如何在 C# for 循环中使用 var?

如何在write方法中使用for循环?

C#在foreach循环中使用点的偏移量方法来修改点数组

如何在C#中使用构造函数调用方法?

如何在C#中使用Ajax调用类方法

如何在C#中使用IUIAutomation :: ElementFromIAccessible方法?

如何在C#中使用Moq测试Add方法

如何在方法 C# 中使用全局设置的变量

在 For 循环中使用 Replace 方法

在for循环中使用条件的最快方法

为什么我不能在匿名方法中的while循环中使用break?

如何使用C#实现线程安全类队列的push和pop方法

如何在while循环中使用return语句?

如何在while循环中使用提取

如何在while循环中使用curl的值?