Class Constructors
A class constructor is the same as a struct constructor. It is a method which is executed when an object is created.
The syntax for creating a constructor is the following:
index
1234567class className { // ... other class code public className() { // code } }
For-example:
index
1234567891011121314151617using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }
You can see from the output that the Console.WriteLine
statement inside the Player constructor is executed every time a new object is created.
Following is an example code from the Struct Constructors chapter. The term static
is explained in the comments as it is more relevant here however it is not necessary to completely understand it as this concept will be explained in detail in later sections.
index
1234567891011121314151617181920212223using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
In order to convert the Player
struct into a class, all we need to do is to change the term struct
to class
:
index
12345678910111213141516171819202122232425262728using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Similarly, we can have constructors with some arguments as well. Usually, this method is used to make the initialization of class fields easier:
index
12345678910111213141516171819202122232425262728using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }
At this point, we have covered most of the basic concepts of the Classes
, and judging from the syntax and behavior, Classes
seem to be exactly the same as Structs
, however, that is not actually the case. As stated in the first chapter of this section, Structs are a limited version of Classes that only provide a basic functionality on the other hand the features of Classes are much more complex and broad. In this section we have covered all the features that are similar between Classes
and Structs
. In the next two sections we will learn all the intricacies of classes and object-oriented programming.
1. When is a constructor method called?
2. What will be the name of a constructor method in a class called "Animal"?
3. Which keyword is used before a constructor name?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo