This page is a work in progress.You can help improve it. →

C# Classes

A class represents a custom data type that allows us to store both state (properties) and behavior (methods) together.

Declaring a class with properties

This declares a class with three properties, Name, Age, and HungerLevel.

class Cat{ public string Name { get; set; } public int Age { get; set; } public int HungerLevel { get; set; }}

Instantiating an object from a class

var kitty = new Cat();

In this case kitty.Name will be null, kitty.Age will be 0, and kitty.HungerLevel will be 0. Since we did not provide any values for these properties when we made a new Cat.

Instantiating an object and providing values for properties

var kitty = new Cat() { Name = "Fluffy", Age = 3, HungerLevel = 5};

In this case kitty.Name will be "Fluffy", kitty.Age will be 3, and kitty.HungerLevel will be 5.

Providing a default value for a property

If a property should default to a value we can specify it in the class.

class Cat{ public string Name { get; set; } = "Unknown Cat"; public int Age { get; set; } public int HungerLevel { get; set; } = 3;}
var kitty = new Cat();

In this case kitty.Name will be "Unknown Cat", kitty.Age will be 0, and kitty.HungerLevel will be 3.

Declaring a class with properties and methods

If all cats have the behavior that every time they play, their hunger increases by 3 we can implement that as a method on the class.

class Cat{ public string Name { get; set; } = "Unknown Cat"; public int Age { get; set; } public int HungerLevel { get; set; } = 3; public void Play() { HungerLevel += 3; }}
var kitty = new Cat() { Name = "Fluffy", Age = 3, HungerLevel = 5};kitty.Play();kitty.Play();

At this point kitty.HungerLevel would be 11 (5 + 3 + 3).

Declaring a property that can be null

As we saw above the default value for a string is null but for an int it is 0. We can indicate that we allow null values for the int by appending it with a ?.

NOTE: This is often useful when declaring classes that will be populated from a database or JSON where a column or field is null in the input.

class Cat{ public string Name { get; set; } = "Unknown Cat"; public int? Age { get; set; } public int HungerLevel { get; set; } = 3;}
var kitty = new Cat()

In this case kitty.Age would be null, not 0.

Constructors

The other way to create new instances of an object is by specifying and requiring a constructor. A constructor is a method with the same name as the class which is called when we use new Cat (or the class name). We get a default constructor for free just by declaring the class. We can change the implementation of that default constructor, or add more constructors that take specific names.

class Cat{ public Cat() { Name = "Fluffy"; Age = 3; HungerLevel = 5; } public Cat(string newName) { Name = newName; Age = 3; if (newName == "Hungry Cat") { HungerLevel = 100; } else { HungerLevel = 5; } } public string Name { get; set; } public int? Age { get; set; } public int HungerLevel { get; set; }}

In this case:

var theHungryKitty = new Cat("Hungry Cat");var regularCat = new Cat();

The value of theHungryKitty.HungerLevel will be 100 while regularCat.HungerLevel will be 5.

© 2017 - 2022; Built with ♥ in St. Petersburg, Florida.