user328570
user328570

Reputation:

'Method' is used like a 'type' error C#

So I have this bit of code, that for some reason won't compile, because it says I am using a method as a type.... I for some odd reason can't see what it is that is supposed to be wrong, the only article google gave me, was an article here that is less than useless.

So my question is, what is wrong with this code:

static void Main() {
    Application.Run(new stat_checker());
}
public stat_checker() {
}

Upvotes: 3

Views: 25768

Answers (7)

Al C.
Al C.

Reputation: 1

Could it be as simple as mismatched Namespaces They would need to be the same in both classes to use the unqualified new stat_checker(). This bit me once which is how I got here... ;-)

Upvotes: 0

Fady Mohamed Othman
Fady Mohamed Othman

Reputation: 1908

The Application.Run(); function takes a form as its argument for example: Application.Run(new Form1());

Upvotes: 0

Teekin
Teekin

Reputation: 13299

The problem is that stat_checked is a function, not a class constructor for an ApplicationContext class, like it needs to be.

What you should do is something more like this:

class StatChecker : ApplicationContext
{
    public StatChecker()
    {
        Console.WriteLine("Hello, world!");
    }
}

Then you can instantiate it like this:

Application.Run(new StatChecker());

Note that your StatChecker class has to extent or return ApplicationContext. The typical "Form" class, for instance, extends ApplicationContext which is why it works.

Upvotes: 0

Justin Denton
Justin Denton

Reputation: 581

In your code, stat_checker is declared as a method; the new keyword is used to create an instance of a type (class, etc) - the two don't mix.

If stat_check is a method, then lose the Application.Run(new ...) and just call it directly.

Is this a console application? More details of what you're trying to accomplish would help us advise you.

Upvotes: 0

Jeff Yates
Jeff Yates

Reputation: 62407

Depending on your intent, you need to do one of two things.

Either declare stat_checker as a class that is a Form,

static void Main() {
    Application.Run(new stat_checker());
}

public class stat_checker : Form {
// TODO: Implement the class
}

Or declare stat_checker as a method that returns a Form and remove the new,

static void Main() {
    Application.Run(stat_checker());
}
public Form stat_checker() { 
// TODO: Code that creates and returns a Form.
}

Upvotes: 0

Jon Skeet
Jon Skeet

Reputation: 1503789

Well, you're calling new on it, so it looks like you want to declare a type called stat_checker:

public class stat_checker : Form
{
}

Alternatively, if you wanted to call stat_checker you'd need to write:

Application.Run(stat_checker());

But you also need to change stat_checker to be a valid type:

public Form stat_checker() {
    // Return something here
}

Were you trying to include this code within a type called stat_checker? If so, it should already work:

using System;
using System.Windows.Forms;

class stat_checker : Form {

    static void Main() {
        Application.Run(new stat_checker());
    }
    public stat_checker() {
    }
}

If you could tell us which of these scenarios you're actually trying to achieve, that would help. I'd also suggest that you start following .NET naming conventions, e.g. using StatChecker instead of stat_checker.

Upvotes: 10

Darin Dimitrov
Darin Dimitrov

Reputation: 1039498

You are missing a return type in your method definition:

public ??? stat_checker() {

}

Without a return type this is considered to be a constructor of the stat_checker type. So if you intended this to be a constructor it has to be put in a class called stat_checker.

Upvotes: 3

Related Questions