Extension method resolution
I wrote an extension method for String to get a char argument, string.Remove(char) . But when I used this, it instead called the default string.Remove(int) method. Shouldn't the presence of an actual method have higher priority than an implicit conversion? Instance methods have priority over extension methods. Your observation is proof of the same. When resolving which method to call, it will always pick a matching instance method over an extension method... which is intuitive in a way. Paraphrased from C# in depth, When the compiler sees that you're trying to call a method which looks like an