To create a static class, precede the class keyword with the static keyword. Based on the above two rules, here is an example: using System; public static class Square { public static double side; public static double Perimeter() { return side * 4; } public static double Area() { return side * side; } } public class Exercise { public static int Main() { Square.Side = 36.84; Console.WriteLine("Square Characteristics"); Console.Write("Side: "); Console.WriteLine(Square.side); Console.Write("Perimeter: "); Console.WriteLine(Square.Perimeter()); Console.Write("Area: "); Console.WriteLine(Square.Area()); return 0; } } This would produce: Square Characteristics Side: 36.84 Perimeter: 147.36 Area: 1357.1856 Press any key to continue . . . If you create a class marked as static, you cannot derive a class from it.
Like a normal method, a constructor can be made static. There are rules you must follow. If you want to use a static constructor, you must explicitly create it (the compiler doesn't create a static constructor for you). The static constructor must become the default constructor. That is, you must create a constructor that doesn't take any argument. Here is an example: public class Person
{
public string firstName;
static Person()
{
}
}
If you create a static constructor, you cannot directly access the non-static fields of the class: You can still access any field of the class as you see fit. Here are examples: using System;
public class Person
{
public string firstName;
static Person()
{
}
}
public class Exercise
{
public static int Main()
{
Person pers = new Person();
pers.firstName = "Gertrude";
Console.WriteLine("Personal Identification");
Console.Write("Name: ");
Console.WriteLine(pers.firstName);
return 0;
}
}
To use a static constructor, you have various options. To initialize a member variable in the static constructor, you can declare a variable for the class and access the member variable. Here is an example: public class Person
{
public string firstName;
static Person()
{
Person pers = new Person();
pers.firstName = "Gertrude";
}
}
In reality, one of the reasons for using a static constructor is to initialize the static fields of the class or take any action that would be shared by all instances of the class. Therefore, another option to use a static constructor is to initialize the static member variables. After doing this, when accessing the initialized static field(s), it(they) would hold the value(s) you gave it(them). Here is an example: using System;
public class Person
{
public static string firstName;
static Person()
{
firstName = "Gertrude";
}
}
public class Exercise
{
public static int Main()
{
Console.WriteLine("Personal Identification");
Console.Write("Name: ");
Console.WriteLine(Person.firstName);
return 0;
}
}
This would produce: Personal Identification Name: Gertrude Press any key to continue . . . Because the constructor is static, you cannot access it by declaring a variable for the class. Another rule to observe with a static constructor is that you must not add an access modifier to it. The following will result in an error: public class Person
{
public static Person()
{
}
}
You can create a class that uses a combination of a static constructor and one or more other (non-static) constructors. Here is an example: public class Person
{
public string firstName;
public string lastName;
static Person()
{
}
public Person(string first, string last)
{
firstName = first;
lastName = last;
}
}
If you create such a class and if you want to declare a variable for it, the default constructor doesn't exist or is not available. If you want to declare a variable, you must use a constructor that takes an argument. Here is an example: using System;
public class Person
{
public string firstName;
public string lastName;
static Person()
{
}
public Person(string first, string last)
{
firstName = first;
lastName = last;
}
}
public class Exercise
{
public static int Main()
{
Person pers = new Person("Gertrude", "Monay");
Console.WriteLine("Personal Identification");
Console.Write("First Name: ");
Console.WriteLine(pers.firstName);
Console.Write("Last Name: ");
Console.WriteLine(pers.lastName);
return 0;
}
}
This would produce: Personal Identification First Name: Gertrude Last Name: Monay Press any key to continue . . . Based on this, you should create a static constructor only if you have a good reason.
|
|||||||||||||||||||||||