Compiler optimizations with generics

public interface Isome<T> where T: ISomeOther
{
   T Foo();
}
//vs

public interface ISome
{
  ISomeOther Bar();
}


public class A : ISome<SomeOther> //where SomeOther : ISomeOther
{
  SomeOther Foo();
}
//vs

public class B : ISome
{
  SomeOther Bar(); //where SomeOther : ISomeOther
}

Is the implementation of A and B semantically equivalent or is there some Boxing/Unboxing/polymorphism going on with the Implementation of B? Meaning that A would be more efficient Because of static compiler optimizations with generics?
Was this page helpful?