C#: What is the difference between "public void" and "public static void"? Thank you!?

Chris2014-04-16T16:45:24Z

Favorite Answer

A static function is meant for general use and does not require an instance, while a non-static function is called on an object instance created using the class as blueprint.

Say you have a Rectangle class. A method that calculates the area would be non-static, since you would call it on a rectangle instance: myRect.getArea(), myOtherRect.getArea(), etc.
If you want to calculate the total area of all rectangles, it does not make sense to implement this method as part of a specific rectangle, it's a general method that should be part of the Rectangle class itself. Therefore you'd use static in its definition, and from the outside, call it using Rectangle.getTotalArea()

Anonymous2014-04-16T17:53:01Z

void = a function/method that returns nothing.

public = to be able to be accessed anywhere in the code.

static = to be able to be accessed without any object, just by using class name and dot operator

so,

public void = any method or function ( user defined or class member ) that can be accessed anywhere in the program and it won't return a value. ( if member of the class, then by using . operator after object , if user defined, then by calling simply)

public static void = any method or function "of a class" that can be accessed without any object of that class.

see ,

/********************************************************************/
public void ( example ):

class abc {

public void show() {

Console.writeLine("hello");

}

}


in main, to access this function you will have to create an object

abc object;

object.show(); // calling function with the object of that class


/*****************************************************************************/

user defined public void function (example)

public void show() {

Console.WriteLine("hello");

}

int main , you can call it as

show();

since it's a user defined function. ( you can also add parameters and other stuff if you want 0


}


/************************************************************************/

public static void ( example ):

class abc {

public static void show() {

Console.writeLine("hello");

}

}

in main, you can call it just by class name and dot operator

abc.show(); // calling function with just class name and dot operator