Can (a==1 && a==2 && a==3) evaluate to true in C# without multi-threading?
我知道可以用JavaScript来实现
但是,是否有任何可能的解决方案可以在不使用多线程的情况下,在下面的C中给出的条件下打印"hurraa"?
1 2 3 | if (a==1 && a==2 && a==3) { Console.WriteLine("Hurraa"); } |
当然,你可以让EDOCX1[0]超负荷工作,做任何你想做的事情。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTestProject1 { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var a = new AlwaysEqual(); Assert.IsTrue(a == 1 && a == 2 && a == 3); } class AlwaysEqual { public static bool operator ==(AlwaysEqual c, int i) => true; public static bool operator !=(AlwaysEqual c, int i) => !(c == i); public override bool Equals(object o) => true; public override int GetHashCode() => true.GetHashCode(); } } } |
当然,这和几个javascript答案的概念是一样的。在属性getter中有一个副作用。
1 2 3 4 5 6 7 8 9 10 11 | private static int _a; public static int a { get { return ++_a; } set { _a = value; } } static void Main(string[] args) { a = 0; if (a == 1 && a == 2 && a == 3) { Console.WriteLine("Hurraa"); } Console.ReadLine(); } |
号
C有财产
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | static int a = 1; static int index { get { return (a++); } } static void Main(string[] args) { if (index == 1 && index == 2 && index == 3) Console.WriteLine("Hurraa"); } |
。
这取决于什么是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class StrangeInt { public static bool operator ==(StrangeInt obj1, int obj2) { return true; } public static bool operator !=(StrangeInt obj1, int obj2) { return false; } } static void Main(string[] args) { StrangeInt a = new StrangeInt(); if(a==1 && a==2 && a==3) { Console.WriteLine("Hurraa"); } } |