Важная часть
public static string Name="foo";
, который создает изменяемое статическое свойство. Это позволяет
Class1.Name="bar"
с вне класса, а также с внутри класса - внутри класса вы можете сократить это значение до
Name="bar"
именно так и называется через ChangeName("bar")
Возможно, вы захотите рассмотреть
public static readonly string Name="foo";
EDIT
Если вы хотите иметь возможность изменять значение только из статических методов, рассмотрите возможность использования конструкции сеттера / геттера с соответствующей логикой сеттера.