In general, static means “associated with the class, not an instance”.
// Search c# static review for more detail
In C#, static means something which cannot be instantiated. You cannot create an object of a static class and cannot access static members using an object. C# classes, variables, methods, properties, operators, events, and constructors can be defined as static using the static modifier keyword.
Static classes are just tools — they don’t need specific instances and they
don’t store new information.
So you don't have to instantiate(create an object) to access it.
Static like Math.PI.
(static) >> means that the method belongs to the Program class
and not an 'object' of the Program class.
public class MyClass
{
//Instance variable to be automatically set to five
public int instanceVar = 5;
//Variable belonging to the type/class
public static int typeVar = 10;
}
public class MainClass
{
void Main()
{
//Field is accesible as it is a variable belonging to the type as a whole
Console.WriteLine(MyClass.typeVar);
//The following would throw an error, because the type isn't an instance
//Console.WriteLine(MyClass.instanceVar)
//Create an instance of the defined class
MyClass instance = new MyClass();
//Writes 5, because we told it to be set to 5 upon creation of the object
Console.WriteLine(instance.instanceVar);
instance.instanceVar += 22; //Add 22 to the instance's variable
NyClass second = new MyClass(); //Create a second instance, named 'second'
Console.WriteLine(instance.instanceVar);//27, unless i did my math wrong :/
//The second instance has it's own variable separate from the first
Console.WriteLine(second.instanceVar);//5
}
}
using System;
class Example
{
static int _count;
public static int Count
{
get
{
// Side effect of this property.
_count++;
return _count;
}
}
}
class Program
{
static void Main()
{
Console.WriteLine(Example.Count);
Console.WriteLine(Example.Count);
Console.WriteLine(Example.Count);
}
}
////////////////////
1
2
3