2010-01-28 3 views
0

l'opérateur de transtypage est cool en C++, pas une telle chose en C#?aucun opérateur de transtypage pour classe dans C#?

C++ Code:

class A 
{ 
int dat; 

public: 
A(int num = 0) : dat(num) {} 

operator int() {return dat;} // cast to int 
}; 
+0

La prochaine fois, essayez d'être clair et précis lorsque vous poserez votre question la première fois. Cela vous aidera à éviter les votes serrés. –

+0

@jeffamaphone, vous avez. – Benny

Répondre

4

C# a! ici quelques exemples de MSDN: explicites:

public static explicit operator Celsius(Farenheit f) 
{ 
    return new Celsius((5.0f/9.0f)*(f.degrees-32)); 
} 

Implicite:

// User-defined conversion from double to Digit 
public static implicit operator Digit(double d) 
{ 
    return new Digit(d); 
} 
0

Quelle est la caractéristique spécifique que vous cherchez? Pour la conversion de type de classes, vous pouvez rétrograder des références à la classe de base en convertissant à la syntaxe type ((BaseClass) o). Vous pouvez convertir des références à d'autres types via Convert.ToInt32 ("223"); pour les types qui implémentent IConvertible. Quelles sont les spécificités que vous recherchez?

HTH.

1

Puisque les opérateurs de cast implicites et explicites sont des opérateurs unaires, ils peuvent être remplacés en utilisant une syntaxe comme les autres opérateurs unaires. Voici la syntaxe générale de l'opérateur de conversion implicite:

public static implicit operator result-type(op-type operand)