Да, использование модификатора "new" эффективно отключит предупреждение компилятора, но вы явно скрываете метод экземпляра со статическим методом. (Это отличается от переопределения метода.) Как правило, вы не хотите скрывать метод экземпляра, кроме как по очень веским причинам, и вам действительно не следует скрывать его статическим методом, поскольку это действительно меняет семантику поведения вызова. Каждый объект в .NET имеет метод экземпляра с именем ToString (), который имеет определенное поведение, которого ожидают разработчики; скрывая это поведение с помощью нового статического метода, вы изменяете это ожидание, что может привести к путанице.
Что ты "к струне"? Статические классы, как правило, не содержат внутреннего состояния, поэтому на самом деле не должно быть никаких внутренних данных для предоставления в качестве логического вывода вызова ToString (). Вы можете переосмыслить дизайн своего класса или предоставить другое имя метода, которое более четко указывает назначение метода, не скрывая экземпляр ToString ().