gpt4 book ai didi

sharpdevelop - Foreach 循环 VB.Net 到 C# 代码转换

转载 作者:行者123 更新时间:2023-12-03 11:12:15 27 4
gpt4 key购买 nike

这是 VB.Net 中的代码

If Not queryItems Is Nothing Then
For Each qItem As String In queryItems
qItem = qItem.ToLower()
Next
End If

它是 c# 中的“等效”代码(使用 sharpdevelop/developerfusion/telerik 的转换器/VS 2012“粘贴为 c#”方法)

if (queryItems != null)
{
foreach (string qItem in queryItems)
{
qItem = qItem.ToLower();
}
}

C# 编译器(正确的)提示如下

"Cannot assign to 'qItem' because it is a 'foreach iteration variable'"

我想知道为什么在 VB.Net 中允许这种行为?

最佳答案

问题的症结似乎是这个

I am wondering why this behavior is permitted in VB.Net?

一个更好的问题可能是下面的

Why did C# prevent assignment to the foreach iteration variable?

如果您查看一组循环结构和语言,C# 就是其中的佼佼者。在几乎所有其他情况下(甚至在 Java foreach 中),分配给循环构造的迭代变量都是合法的。我知道的唯一其他情况是

  • F#:默认情况下变量是只读的,所以这只是与其他语言的一致性
  • Ada:不允许在 for 语句中分配循环值

VB.Net 实际上在这里比 C# 更符合规范。

遗憾的是,尚不清楚 C# 做出此选择的原因。那里有很多推测性的答案,但在 Eric 或 Anders 就此发表博客文章之前,真正的原因仍然未知

关于sharpdevelop - Foreach 循环 VB.Net 到 C# 代码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com