Это не похоже на проблему. Компилятор перемещает инициализации полей в конструктор, но отладочная информация старается максимально точно следовать коду C #.
Так что на самом деле ваш IL будет выглядеть примерно так:
class B:A
{
string name;
public B()
{
// hidden from debugger
name = "11"
// here's where the debugger is told the constructor starts
name = "22";
}
}
Вот почему ваша точка останова на public B()
показывает, что name
уже инициализирован.