Bring up a project, and go to Solution Explorer
; right-click, select Add
, and click on Class
. Name the class GenericsClass
; a simple generics class. Then, click on OK
. When the Visual Studio message comes up, click on Yes
.
For our purposes, you don't need any of the using System
lines at the top, nor any of the comments underneath, so delete them. Your initial screen should look like Figure 1.1.1:
Figure 1.1.1: The initial GenericsClass.cs screen
Now, let's put a <T>
symbol after where it says public class GenericsClass
, as follows:
public class GenericsClass<T>
This means that this single class can work equally well with several different data types. Next, enter the following beneath the open curly brace under the preceding line:
private T[] vals;
Enter the following comment directly above this line:
//generic array instance variable
In other words, this will operate equally well on doubles, decimals, integers, and so on.
Now, in the following line, enter the following:
public GenericsClass(T[] input)
As you can see, you can also make parameters that are generic like this one. This is a parameter, input
is the name of it, and the type is T
. So, it's a generic array.
Next, enter the following between a set of curly braces beneath the preceding line:
vals = input;
Of course, you should be able to display these values. so, enter the following line beneath the closed curly brace under the vals = input;
line:
public string DisplayValues()
To display these values, you'll enter the following between a set of curly braces beneath the preceding line.
First, put in a string, as follows:
string str = null;
Next, declare the string and initialize the value to null.
Then, enter the following directly below this line:
foreach ( T t in vals)
As you can see, the foreach
loop here is going to operate. The T
object will be a different data type, depending on how we choose to make the object. The t
variable, of course, is each specific value inside the vals
array.
Next, you will enter the following between a set of curly braces beneath the preceding line:
str += $"<br>Value={t}";
Remember, we use the +=
operator to accumulate and <br>
to push down to the next line. To get the value, of course, we will put in the t
variable.
At the end, you want to return this, so you will type the following beneath the closed curly brace under the preceding line:
return str;
That's it. The final version of the GenericsClass.cs
file for this chapter, including comments, is shown in the following code block:
//<T> means this class can operate on many different data types public class GenericsClass<T> { //generic array instance variable private T[] vals;//array of T inputs public GenericsClass(T[] input) { //set value of instance variable vals = input; } public string DisplayValues() { string str = null;//create string to build up display foreach(T t in vals) { //actually accumulate stuff to be displayed str += $"<br>Value={t}"; } //return string of outputs to calling code return str; } }
Notice that we have a single block of code; this will now operate on integers, doubles, and so on.