On Mon, Feb 2, 2009 at 4:55 PM, grauzone <n...@example.net> wrote: > I agree. Of course using an interface to call a method always requires a > virtual method call. It's even slower than a virtual method call, because it > needs to convert the interface reference into an object reference. > > But he still could call the method in question directly. Implementing an > interface can be useful to enforce a contract. You can't do that with > structs.
What's the point of implementing an interface unless you plan on passing instances of that class to something that expects an interface reference? ;) > Code compiled in debug mode (or was it not-release mode) also calls the code > to check the invariant, even if you didn't define one. I guess this can make > calling struct methods much faster than object methods. Invariants (as well as in/out contracts and assertions) are turned off in release mode. FWIW, struct methods also do an "assert(this !is null);" in debug mode, so they're sort of doing an invariant check. But struct methods are never virtual, so yes, they will in general be faster.