C#. Где может быть полезна явная реализация интерфейса?
Ну есть у вас, предположим, два интерфейса (IDollar и IEuro) в которых описан метод с одним и тем же именем (getPrice). Если у вас случится так, что будет класс (Car), который будет реализовывать эти интерфейсы, то для корректной работы, а именно, чтобы возвращать цену в долларах и евро, необходимо явно реализовать оба метода интерфейсов в классе и вызывать так:
(IEuro)car.getPrice() - цена в евро
(IDollar)car.getPrice() - цена в долларах
Я иногда делаю в классе и обычный метод, и явно реализуемый, с тем же именем, для удобства. 
Например, иногда нужен компарер как объект с методом, а иногда объект не нужен, и тогда можно вызывать статический метод.public class NaturalComparer : IComparer<string>
{
	[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
	private static extern int StrCmpLogicalW(string psz1, string psz2);

	public static int Compare(string x, string y)
	{
		return StrCmpLogicalW(x, y);
	}

	int IComparer<string>.Compare(string x, string y)
	{
		return StrCmpLogicalW(x, y);
	}
}

public class TestApp
{
	public static void Main()
	{
		// Используем явную реализацию
		var arr = new [] { "a5", "a1", "a10", "a3", "a7" };
		Array.Sort(arr); // a1, a10, a3, a5, a7
		Array.Sort(arr, new NaturalComparer()); // a1, a3, a5, a7, a10

		// Используем статический метод
		var list = new List<string> { "a5", "a1", "a10", "a3", "a7" };
		const string max = "a4";
		var minElements1 = list.Where(s => s.CompareTo(max) < 0).ToList(); // a1, a10, a3
		var minElements2 = list.Where(s => NaturalComparer.Compare(s, max) < 0).ToList(); // a1, a3
	}
}