Я начал с этого:
interface IFoo
{
string X { get; set; }
}
class C : IFoo
{
public void F()
{
}
string IFoo.X { get; set; }
}
Он скомпилирован, как я и ожидал.Не удивительно.
Затем я перехожу к этому:
interface IFoo
{
string X { get; set; }
}
class C : IFoo
{
public void F()
{
X = "";
}
string IFoo.X { get; set; }
}
Теперь я получаю «X недоступно в текущем контексте».
Не ожидал этого.
Я получаю:
interface IFoo
{
string X { get; set; }
}
class C : IFoo
{
public void F()
{
X = "";
}
private string X;
string IFoo.X { get; set; }
}
И я бы никогда не подумал об этом.
Вопрос:Приведенный выше код не совпадает с моим нынешним пониманием Thins, потому что я вижу два X.На интуитивном уровне я вижу, что компилятору не нужно запутываться.Может кто-нибудь выразить это словами своих правил игры здесь?
Заранее спасибо.
Обновление после ответа: я мог бы выполнить приведение к интерфейсу, как показано ниже:
interface IFoo
{
string X { get; set; }
}
class C : IFoo
{
public void F()
{
(IFoo(this)).X = "";
}
string IFoo.X { get; set; }
}