码迷,mamicode.com
首页 > Windows程序 > 详细

【学习笔记】C# 泛型

时间:2017-07-26 22:01:38      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:style   ring   比较   泛型类   重要   system   ++   lin   color   

今天学习了一下C#里泛型的使用,在此方法中,首先用一个简单的数组,定义一个class Array来进行数组内,增加数字,查看数组内元素个数,更改某个索引下数组的某个元素。

在此我们发现,如果想进行其他类型的数组的操作,我们需要使用最强大的CV大法进行复制粘贴,使得代码的重用性降低,所以在此,泛型的引入十分重要,泛型的学习心得及解释代码如下:

 

泛型

  • 使用泛型能够最大限度地重用代码、保护类型安全、提高性能
  • 泛型成员因为类型的不确定性,不能使用算术运算符、比较运算符
  • 类型参数可以有多个,可以是编译器能够识别的任何类型
  • 类型参数的名字不能够随便起,不能重名

  

  1 using System;
  2 //泛型
  3 namespace GenericTypeDemo
  4 {
  5     //使用泛型
  6     //数组类 Array
  7     //泛型类--需要在类名后加上泛型类型
  8     //定义的时候需要用 T 泛型类型表示任意一种类型
  9     //1. 使用泛型能够提高代码重用
 10 
 11     //2. 使用泛型时,由于类型不确定,所以我们不能使用算术运算符
 12     //public class Math<T>
 13     //{
 14     //    public T Max(T num1, T num2)
 15     //    {
 16     //        return num1 > num2 ? num1 : num2;
 17     //    }
 18     //}
 19 
 20     //T - type
 21     //S/U/V - 第二、三、四种类型
 22     //K/V - key/value
 23     //N - number
 24     public class Array<T/*,S,U,V*/>
 25     {
 26         //索引器
 27         public T this[int index]
 28         {
 29             set { _arr[index] = value; }
 30             get { return _arr[index]; }
 31         }
 32 
 33         public int Count
 34         {
 35             get { return _count; }
 36         }
 37 
 38         public void Add(T value)
 39         {
 40             _arr[_count] = value;
 41             _count++;
 42         }
 43 
 44         public void Log()
 45         {
 46             string str = "当前数组中包含 " + Count + " 个元素:(";
 47             for (int i = 0; i < Count; i++)
 48             {
 49                 str += _arr[i];
 50                 if (i < Count - 1)
 51                 {
 52                     str += ", ";
 53                 }
 54             }
 55             str += ")";
 56             Console.WriteLine(str);
 57         }
 58         public Array()
 59         {
 60             _arr = new T[100];
 61         }
 62         private T[] _arr;
 63         private int _count = 0; //保存当前数组里的元素个数
 64     }
 65 
 66     #region
 67     /*
 68     //数组类 Array
 69     public class Array
 70     {
 71         //索引器
 72         public int this[int index]
 73         {
 74             set { _arr[index] = value; }
 75             get { return _arr[index]; }
 76         }
 77 
 78         public int Count
 79         {
 80             get { return _count; }
 81         }
 82 
 83         public void Add(int value)
 84         {
 85             _arr[_count] = value;
 86             _count++;
 87         }
 88 
 89         public void Log()
 90         {
 91             string str = "当前数组中包含 " + Count + " 个元素:(";
 92             for (int i = 0; i < Count; i++)
 93             {
 94                 str += _arr[i];
 95                 if (i < Count - 1)
 96                 {
 97                     str += ", ";
 98                 }
 99             }
100             str += ")";
101             Console.WriteLine(str);
102         }
103         public Array()
104         {
105             _arr = new int[100];
106         }
107         private int[] _arr;
108         private int _count = 0; //保存当前数组里的元素个数
109     }*/
110     #endregion
111 
112     class Program
113     {
114         static void Main(string[] args)
115         {
116             //当具体使用的时候,才需要确定作用的类型
117             //Array<int> arr = new Array<int>();
118             Array<float> arr = new Array<float>();
119             arr.Log();
120 
121             arr.Add(23.5f);
122             arr.Log();
123 
124             arr.Add(432.332f);
125             arr.Log();
126 
127             arr[1] = 12.55f;
128             arr.Log();
129 
130             #region
131             //Array arr = new Array();
132             //arr.Log();
133 
134             //arr.Add(13);
135             //arr.Log();
136 
137             //arr.Add(97);
138             //arr.Log();
139 
140             //arr.Add(32);
141             //arr.Log();
142 
143             //arr[0] = 25;
144             //arr.Log();
145             //Console.WriteLine("arr[1]= " + arr[1]);
146             #endregion
147 
148             //int[] arr = new int[3];
149             //arr[0] = 1;
150             //arr[1] = 2;
151             //arr[2] = 3;
152             //Console.WriteLine(arr.Length);
153         }
154     }
155 }

 

【学习笔记】C# 泛型

标签:style   ring   比较   泛型类   重要   system   ++   lin   color   

原文地址:http://www.cnblogs.com/stardream19/p/7241748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!