【发布时间】:2020-12-22 16:38:50
【问题描述】:
什么是正确的转换方式
if((year mod 4=0 and year mod 100<>0) or (year mod 400=0), “Leap Year”, “Not a Leap Year”)
转 C#
我能够成功转换第一部分 if ((year % 4 == 0 & year % 100 != 0) | (year % 400 == 0)),但是当我添加消息时,我得到一个错误。
任何帮助将不胜感激。
【问题讨论】:
-
@MindSwipe,这实际上不是真的。在 VB 中,您有短路布尔运算符
AndAlso和OrElse,非短路布尔运算符And和Or以及按位运算符And和Or。所有这些都有 C# 等价物,就像在 VB 中一样,非短路布尔运算符和位运算符是相同的。也就是说,在 C# 中,有短路布尔运算符&&和||,非短路布尔运算符&和|以及按位运算符&和@987654334 @. -
@MindSwipe,您可能从未在 C# 中遇到过非短路布尔运算符,因为几乎没有人使用它们,几乎没有人应该使用它们。在 VB 中也是如此,但由于 VB6 及之前的所有历史,没有短路运算符,很多人使用了错误的运算符。
-
哇,刚刚了解了非短路运算符!
-
@jmcilhinney 很有趣,我不知道。我的 VB 知识开始和结束于玩 MS Office 宏的 45 分钟。然而,我接触到了 C# 中的短路与非短路运算符,它们只是从我的脑海中溜走了(就像你说的,并且有充分的理由)几乎没有人使用它们
-
乐观代码,顺便说一句。下一次它实际上比简单的 mod 4 更有用的是 2100。我们中很少有人会在那时还活着。我想知道代码是否仍在运行。