en utilisant des méthodes d'extension sur int

Je suis en train de lire sur les méthodes d'extension, et monkeying autour avec eux
pour voir comment ils fonctionnent, et j'ai essayé ceci:

namespace clunk {
    public static class oog {
        public static int doubleMe(this int x) {
            return 2 * x;
        }
    }

    class Program {
        static void Main() {
            Console.WriteLine(5.doubleMe());
        }
    }
}

et cela a fonctionné comme prévu, le succès de l'extension de type int, avec la doubleMe méthode d'impression 10.

Prochaine, être un vieux C gars, je me demandais si je pouvais faire cela:

namespace clunk {
    public static class BoolLikeC {
        public static bool operator true(this int i)  { return i != 0; }
        public static bool operator false(this int i) { return i == 0; }
    }

    class Program {
        static void Main() {
            if ( 7 ) {
                Console.WriteLine("7 is so true");
            }
        }
    }
}

Je pense que si le premier travail, celui-ci doit travailler pour faire en sorte que
un int utilisé dans un contexte booléen appelez la méthode d'extension sur int, vérifiez que
7 n'est pas égal à 0, et renvoie la valeur true. Mais au lieu de cela, le compilateur n'aime même pas le
plus tard, le code et met le rouge des traits ondulés en vertu de la deux ce et dit de Type "attendu".
Pourquoi ne pas ce travail?

source d'informationauteur Dave