Как уже отмечали другие, свойство «ближе», чем тип, и поэтому при разрешении простого имени свойство всегда выигрывает.
Интересная ошибка в этой ситуации заключается в том, что , если бы вы указали свойство типа CostType, а не int, это сработало бы.
Причина этого в том, что в C # есть специальное правило для этой ситуации, обычно называемое правилом «Цветовой цвет». (Потому что именно в такой ситуации он чаще всего возникает: тип с именем Color и свойство с именем Color типа Color.)
Если простое имя может означать как тип , так и свойство или поле с этим именем этого типа , то C # позволяет вам обоим обращаться к статическим элементам через тип и члены экземпляра через свойство. Это позволяет вам делать такие вещи, как:
Color = Color.Red;
description = Color.ToString();
Первый и третий цвета являются ссылками на свойство; вторая ссылка на тип.