Я был напуган другим вопросом. Поэтому я написал этот пример.
В C ниже указано значение true. См. Демонстрацию
int main()
{
printf("%d", 1 && 2);
return 0;
}
Вывод:
1
В С#. Это ЛОЖЬ. ПОЧЕМУ это ложь? Также я не понимаю, почему мне нужно было создать оператор bool в этом примере, но не тот, который был в моем другом вопросе, но неважно. Почему нижняя ложь? для меня это не имеет смысла.
Кстати, логика, описывающая ниже ложную, описывается здесь
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyInt a=1, b=2;
bool res=a && b;
Console.WriteLine("result is {0}", res);
}
class MyInt
{
public int val;
public static bool operator true(MyInt t) { return t.val != 0; }
public static bool operator false(MyInt t) { return t.val == 0; }
public static MyInt operator &(MyInt l, MyInt r) { return l.val & r.val; }
public static MyInt operator |(MyInt l, MyInt r) { return l.val | r.val; }
public static implicit operator MyInt(int v) { return new MyInt() { val = v }; }
public static implicit operator bool(MyInt t) { return t.val != 0; }
}
}
}