Randall Flagg
Randall Flagg

Reputation: 5118

Illegal declaration of a property and a static function. why?

Can somone explain why I get this error on this code?

Error 1 The type 'ConsoleApplication1.TestClass' already contains a definition for '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");            
        }
    }

Upvotes: 1

Views: 191

Answers (4)

Lucero
Lucero

Reputation: 60196

As other pointed out, you cannot have a method and a property with the same name.

However, you can more or less work around this by using an extension method if you like:

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");
    }
}

Upvotes: 0

Dr. Rajesh Rolen
Dr. Rajesh Rolen

Reputation: 14285

Because you cannot provide same name to a function and a Property. You cannot overload function with property. You can use it in this way:

 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");
    }

}

Upvotes: 0

smirkingman
smirkingman

Reputation: 6368

You've declared IsThisOK twice, at line 3 and line 5 (property and static function).

Try to imagine how could the compiler could figure out to which you are referring later on?

Upvotes: 0

Zippit
Zippit

Reputation: 1683

You're trying to define a property and a method with the same name. While you can have multiple methods that override each other (with different argument lists), you cannot have a property and a method that share the same name

Upvotes: 3

Related Questions