Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement

0

Full article

This error might look a little cryptic at first glance, but it's actually very descriptive in explaining what's wrong. You're likely to come across this one when you're starting out with C# ... or before your first cup of coffee. 😏

Basically, it's telling you that what you typed isn't a valid statement. Which begs the question, what is a statement? Well, it's every valid line (or in some cases, block) of code that makes up your program, for example:

  • Assignments: string name = "Grant";
  • Calls: MyOtherFunction();
  • Increments: x++;
  • Decrements: x--;
  • Await: await myLongTask;
  • New object expressions: new Person();

In general, most statements should either modify a variable's value in-place, perform some side-effect (like a foreach block), or at least do something with the return value.

So if you get this error, double-check the line it's complaining about to make sure it's a valid statement, specifically one of the types listed in the error message itself.

Some specific things to check for:

  • Are you missing a set of parentheses?
    Console.WriteLine
  • Did you use == instead of =?
    string name;
    name == Grant;
  • Did you combine elements of a property and method?
    public string Name() { get; set; }
  • Does your statement only return a value, but you're doing nothing with it?
    var hi = "Hello, "; hi + " Grant";

Author

Grant Winney

Is there anything more satisfying than sharing knowledge? Of teaching someone and witnessing their "ah ha" moment? I usually write about tech, but no promises. I hope you find something interesting!



Comments