Casting vs à l'aide de l' " comme mot-clé dans la CLR

Lors de la programmation d'interfaces, j'ai trouvé que je fais beaucoup de moulage ou de l'objet de la conversion de type.

Est-il une différence entre ces deux méthodes de conversion? Si oui, y a une différence de coût ou comment cela affecte mon programme?

public interface IMyInterface
{
    void AMethod();
}

public class MyClass : IMyInterface
{
    public void AMethod()
    {
       //Do work
    }

    //Other helper methods....
}

public class Implementation
{
    IMyInterface _MyObj;
    MyClass _myCls1;
    MyClass _myCls2;

    public Implementation()
    {
        _MyObj = new MyClass();

        //What is the difference here:
        _myCls1 = (MyClass)_MyObj;
        _myCls2 = (_MyObj as MyClass);
    }
}

Aussi, ce qui est "en général" la méthode préférée?

  • Pourriez-vous ajouter un petit exemple de la raison pour laquelle vous utilisez le jette en premier lieu à la question, ou peut-être en commencer une nouvelle? Je suis plutôt intéressé par savoir pourquoi vous avez besoin de la fonte de l'unité de test. Je pense que c'est en dehors de la portée de cette question.
  • Je peux probablement changer mon test de l'unité pour éviter ce besoin pour cela. En gros, ça revient au fait que j'ai un bien sur mon objet concret qui n'est pas dans l'interface. J'ai besoin de cette propriété, mais la vie réelle que les biens ont été réglés par d'autres moyens. Ne fait que répondre à votre question?
  • Comme Patrik Hägne astucieusement les points ci-après, il y a une différence.
InformationsquelleAutor Frank V | 2009-01-30