C# a==b==c与Python中的三重比较
如何将这段python代码翻译成c# (哪个输出这个) 变成C# a==b==c与Python中的三重比较,c#,python,C#,Python,如何将这段python代码翻译成c# (哪个输出这个) 变成 void Main() { List<bool> l = new List<bool> (){true, false}; foreach(var a in l) { foreach(var b in l) { foreach(var c in l) { Console.Writ
void Main()
{
List<bool> l = new List<bool> (){true, false};
foreach(var a in l)
{
foreach(var b in l)
{
foreach(var c in l)
{
Console.WriteLine(a.ToString()+" "+b.ToString()+" "+c.ToString()+" "+(a==b==c).ToString());
}
}
}
}
试试这个:
Console.WriteLine(a.ToString()+" "+b.ToString()+" "+c.ToString()+" "+(a==b && b == c).ToString());
Python有这样的定义:a==b==c的意思是:
(a==b)和(b==c)
在C#中,a==b==C
的计算公式为:
(a==b)==c
要将Python的a==b==c
转换为c,请使用
当您将列表更改为以下内容时,问题变得很明显:
List<int> l = new List<int> { 1, 0 };
List l=新列表{1,0};
现在,您得到一个错误,即不能对类型为bool
和int
的操作数使用=
运算符。但是您正在执行int==int==int
。因此,对该错误的唯一解释是,在评估第二次比较之前,已经评估了其中一次比较。这就是这里发生的事情
表达式a==b==c
相当于c#中的(a==b)==c
Python在这里的特殊之处在于它将
a==b==c
扩展为a==b和b==c
。因此,在C#中表达这一点的正确方法是a==b&&b==C
好了,pythona==b==C
转换为a==b和b==C
,为什么不直接使用它呢?另一篇文章有一个类似的答案:问题是直接要求翻译。
True True True True
True True False False
True False True False
True False False True
False True True False
False True False True
False False True True
False False False False
Console.WriteLine(a.ToString()+" "+b.ToString()+" "+c.ToString()+" "+(a==b && b == c).ToString());
a == b && b == c
List<int> l = new List<int> { 1, 0 };