This lesson will cover the basic syntax, or “grammar,” of C#. Programming languages are a bit like natural languages – such as English – except you are communicating your intent to a compiler instead of a human being. The compiler is a very complex and smart interface, but it requires very strict adherence to its rules. Whereas humans can infer details communicated in a natural language - even when they are ambiguous - a compiler is also quite dumb and demands precise, explicit instructions. If you forget even a capital letter, a period, or a semi-colon, the C# compiler will complain and refuse to render the code to a format readable by the machine.
C# is similar to a language like English in that both are composed of statements and expressions constructed from elements that are “things,” and “actions done by those things.” In English, we would call these elements nouns and verbs, respectively. However, in C# you would say these elements are operands and operators. Operands are the "nouns", what you act on in the code. They can be literal (integer, etc.) or variable names (myString):
Operators are the "verbs" that act on the operand "nouns". There are many operators in C# that we looked at, such as assignment (=), mathematical (*, /, etc.), concatenation (+), and so on:
For an exhaustive list of operators, categorized in lists describing what they do, take a look at:
As you can see, we form complete expressions by combining operands and operators in much the same way that we combine nouns and verbs to express an idea in a natural language. These programmatic expressions even use a form of punctuation, such as terminating with a semi-colon (which is similar to how a period terminates a sentence).
There is a technical difference between expressions and statements in C#. An expression is a combination of operators and operands that evaluate to a single value, such as the simple operations seen in this lesson so far (string mySimpleName = textBox.Text). Statements, on the other hand, are complete actions. This can be a block of code that executes, a complete line of code ending in a semi-colon, calling a method, etc.
For an in-depth description of expressions, visit: http://is.gd/expressions
For an in-depth description of statements, visit: http://is.gd/statement
The order in which statements are executed in a program is called the flow of control/flow of execution. Up to this point, we’ve been looking at code executed line-by-line, from top to bottom, following a linear flow order. This is the typical order in which the code will execute when compiling. Soon, we're going to learn about statements that can change the flow of execution based on different conditions being met, including:
Another important aspect of syntax in C# is code style. This is one case where programming is not as strict as a written, natural language. If you submitted an English paper that had a sentence looked like this:
You would get a failing grade simply because it doesn’t follow the basic rules of English formatting which economizes whitespace (Empty space between your words). However, in a programming language like C#, these two different ways of writing a statement are treated identically by the compiler, as it just ignores whitespace:
Note: These two expressions above are equivalent to the compiler; notice the absence of a semicolon in the second expression until the very end. This tells the compiler where a singular "thought" ends.
While code styling is a matter of taste, there are some general rules to follow that you will come to notice as we progress in these lessons. The basic rule to follow is to write code that is, above all, readable by a human being. Consistent variable naming conventions, blank lines, indentations, spaces and so on, are there to make code easer for you to read.
The compiler is the ultimate arbiter of C# syntax. However, Visual Studio works on behalf of the compiler - and to your benefit - to warn you when your code will not compile (with a little red squiggly line underneath the code in question). This is the compiler’s way of saying you are using unacceptable grammar (syntax) when constructing C# expressions/statements.
In the above example, the compiler is telling you that it has no idea what to do with this code, as there is no expression that resolves to a single value. What values should it add together? What is it supposed to do with that calculation, where will the value be stored? It has to be part of a valid expression in order to make sense.
There is still a lot more to say about syntax rules, but if you keep these basic rules in mind - and see a compilation error in your code - understand that it's probably because you didn’t form the code correctly, according to C#'s “grammar” rules. Refer back to the links and content provided in this lesson to help you when writing code moving forward in this course.
Lesson 10 - C# Syntax Basics