кто-нибудь может дать быстрый ответ для меня ...
в следующем совершенно бесполезном коде в разделе «класс DuplicateInterfaceClass: MyInterface1, MyInterface2».
Почему я не могу явно написать "публичную строку MyInterface2.P ()"?
все же "открытая строка P ()" и "строка MyInterface2.P ()" работают.
Я понимаю, что все методы интерфейса (свойства и т. Д.) По умолчанию неявно являются "публичными", но моя попытка быть явной в наследующем классе приводит к "ошибке CS0106: модификатор" public "недопустим для этого" пункт».
using System;
interface MyInterface1
{
void DuplicateMethod();
// interface property
string P
{ get; }
}
interface MyInterface2
{
void DuplicateMethod();
// function ambiguous with MyInterface1's property
string P();
}
// must implement all inherited interface methods
class DuplicateInterfaceClass : MyInterface1, MyInterface2
{
public void DuplicateMethod()
{
Console.WriteLine("DuplicateInterfaceClass.DuplicateMethod");
}
// MyInterface1 property
string MyInterface1.P
{ get
{ return ("DuplicateInterfaceClass.P property"); }
}
// MyInterface2 method
// why? public string P()...and not public string MyInterface2.P()?
string MyInterface2.P()
{ return ("DuplicateInterfaceClass.P()"); }
}
class InterfaceTest
{
static void Main()
{
DuplicateInterfaceClass test = new DuplicateInterfaceClass();
test.DuplicateMethod();
MyInterface1 i1 = (MyInterface1)test;
Console.WriteLine(i1.P);
MyInterface2 i2 = (MyInterface2)test;
Console.WriteLine(i2.P());
}
}