官术网_书友最值得收藏!

Accumulating the input

Now, we will accumulate the input. So, in the following sampLabel.Text lines, we change the = sign to +=, as shown here:

GenericsClass<double> dubs = new GenericsClass<double>(new double[] { 1.0, -2.3, 3, 4, 5 });
sampLabel.Text += ints.DisplayValues();
GenericsClass<decimal> decs = new GenericsClass<decimal>(new decimal[] { 1, 2.0M, 3, 4, 5.79M });
sampLabel.Text += ints.DisplayValues();

Let's run it one more time. Click on the Display Values button and your screen will now look like the one shown in Figure 1.1.5:

Figure 1.1.5: The input is now being accumulated, and the values are showing as expected

The program is now working as expected.

So, the big idea of generics at this point is that you can define a generic class. This class can operate equally well on many different data types. For example, you can make a generic class that operates on integers as well as on doubles and decimals.

This step isn't strictly required, but here's a little bit of additional insight. If you want to, you can set a breakpoint as follows. Select the line with the open curly brace under the line beginning with protected void Button1_Click.... Now, go to Debug | Step Into ( F11) and click on Display Values.

Now, we will go through it. So, to first step into it, hover your mouse over the T object in the following line in Generics Class.cs:

public GenericsClass(T[] input)

Here, T is essentially like a parameter, so it does have a certain value, which is expressed in the vals = input; line. The first time, T is used for integers. This is how you can step through this code. At the bottom of the screen, the values inside the array are displayed, as shown in Figure 1.1.6:

Figure 1.1.6: The values inside the array

The t variable, as you can see in Figure 1.1.7, is an integer, and this is how it operates:

Figure 1.1.7: The t is an integer

Notice also in the screenshot that it's a generics class with an <int> datatype.

The T object in the foreach(T t in vals) line right now represents an integer, and so on for the other data types. So, flexibility of code and reuse of code means that you will write less code. If not for generics, you would have to create individual classes to handle each different data type.

主站蜘蛛池模板: 比如县| 民和| 吴川市| 通河县| 嘉峪关市| 光山县| 扎鲁特旗| 仙居县| 岚皋县| 新乐市| 北票市| 青河县| 新绛县| 吴堡县| 皋兰县| 麻阳| 富阳市| 灌南县| 抚州市| 开封县| 来凤县| 阳朔县| 西贡区| 盐山县| 斗六市| 乐业县| 莱阳市| 南平市| 哈密市| 腾冲县| 灌云县| 延长县| 广饶县| 娱乐| 武鸣县| 社会| 法库县| 蒙城县| 苍溪县| 禄劝| 砀山县|