Незаконное объявление свойства и статической функции.Зачем? - PullRequest
1 голос
/ 13 октября 2010

Может ли кто-нибудь объяснить, почему я получаю эту ошибку в этом коде?

Ошибка 1 Тип 'ConsoleApplication1.TestClass' уже содержит определение для 'IsThisOK'

class TestClass
    {
        public bool IsThisOK { get; set; }

        public static bool IsThisOK(string str)
        {
            return true;
        }

        public static void Test()
        {
            TestClass c = new TestClass();
            c.IsThisOK = IsThisOK("Hello");            
        }
    }

Ответы [ 4 ]

3 голосов
/ 13 октября 2010

Вы пытаетесь определить свойство и метод с одинаковым именем.Хотя у вас может быть несколько методов, которые переопределяют друг друга (с разными списками аргументов), вы не можете иметь свойство и метод с одинаковым именем

0 голосов
/ 13 октября 2010

Как уже отмечалось, у вас не может быть метода и свойства с одинаковым именем.

Однако вы можете более или менее обойти это, используя метод расширения, если вам нравится:

static class TestClassExtension
{
    public static bool IsThisOK(this TestClass, string str)
    {
        return true;
    }
}

class TestClass
{
    public bool IsThisOK { get; set; }

    public static void Test()
    {
        TestClass c = new TestClass();
        c.IsThisOK = this.IsThisOK("Hello");
    }
}
0 голосов
/ 13 октября 2010

Вы объявили IsThisOK дважды, в строке 3 и строке 5 (свойство и статическая функция).

Попробуйте представить, как компилятор может выяснить, на что вы ссылаетесь позже?

0 голосов
/ 13 октября 2010

Поскольку вы не можете предоставить одно и то же имя функции и свойству.Вы не можете перегружать функцию свойством.Вы можете использовать его следующим образом:

 class TestClass

{
    public bool IsThisOK { get; set; }

    public static bool isThisOK(string str)
    {
        return true;
    }

    public static void Test()
    {
        TestClass c = new TestClass();
        c.IsThisOK = isThisOK("Hello");
    }

}

...