none
"operator false" Wann wird der aufgerufen? RRS feed

  • Frage

  •   public struct X
      {
        public static bool operator true(X x)
        {
          return true;
        }
        public static bool operator false(X x)
        {
          return false; // <= never called
        }
      }
    
      class Program
      {
        static void Main(string[] args ) {
          var x = new X();
    
          //for (int i=0; x; i++)
          //do {} while (x)
          //while (x)
          if (x) //fine! do not have to cast or compare with null
          {
            Console.WriteLine("Yeah!");
          };
    
          Console.ReadLine();
        }
      }
    

    Der operator true ist 'ne feine Sache. Sobald der überschrieben ist kann man das object direkt für if, for, while und ? verwenden. Dummerweise muss man auch noch den false-Operator programmieren. Ich frage mich: wozu? Ich habe es nicht geschafft, den false-Operator aufzurufen. if, for und while, ALLE nehmen den true-operator.

    Wie schaffe ich es. mal den false-operator aufzurufen?

    Freitag, 20. August 2010 14:39

Antworten