C#的泛型和C++的模板比较相似,其作用就是对代码算法的重用。程序开发都是对数据进行处理,数据根据数据类型区分,处理就是使用不同的算法。但是,由于数据类型的区分,造成我们需要对算法的重复使用。泛型的用途在于按照统一的算法来处理一定范围内的所有数据类型,因此它称之为泛型。
// 泛型的使用, 交换两个变量
public static void change<T>(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
/********************** 以下代码放入到main函数中 *************************/
// 泛型的使用
int a = 1, b = 2;
change<int>(ref a, ref b);
Console.WriteLine("a = " + a + ", b = " + b);
char c = 'c', d = 'd';
change<char>(ref c, ref d);
Console.WriteLine("c = " + c + ", d = " + d);
C#的System.Collections.Generic库提供了大量的泛型,主要用于集合操作。其实使用比较多的是List和Dictionary,他们分别代表线性列表和键值对字典。用法如下:
using System.IO;
using System.Collections.Generic;
// List使用
List<int> list = new List<int>(10);
// 循环添加列表元素
for (int i=0; i<10; i++) {
list.Add(i);
}
// 遍历列表输出
foreach (int temp in list)
{
Console.Write(temp);
}
Console.WriteLine("");
// 移除指定索引的元素
list.Remove(1);
// 清空列表
list.Clear();
// Dictionary使用,记录学生成绩
Dictionary<string, double> stuScore = new Dictionary<string, double>();
// 添加字典元素
stuScore.Add("zhangsan", 88.5);
stuScore.Add("lisi", 93.5);
// 根据key直接读取对应元素
if (stuScore.ContainsKey("lisi"))
{
Console.WriteLine("lisi : " + stuScore["lisi"]);
}
// 遍历字典
foreach (KeyValuePair<string, double> stu in stuScore)
{
Console.WriteLine("Key = {0}, Value = {1}", stu.Key, stu.Value);
}
// 移除指定key的元素
stuScore.Remove("zhangsan");
// 清空字典
stuScore.Clear();
在类中的数据成员,一般情况我们都是设置为私有访问模式(private),然后使用公开(public)的函数成员来访问数据成员。C#语言提供了一个属性成员的概念来实现成员变量的访问。
public class Character
{
private string charName = "";
public string Name
{
set { charName = value; }
get { return charName; }
}
}
// 属性成员的使用
Character ch = new Character();
ch.Name = "player"; // 使用 set 赋值
Console.WriteLine(ch.Name); // 使用 get 获取值
Console.ReadKey();
属性(Name)本质就是函数,它的名称可以和成员变量(charName)不一样。set和get就是用来访问charName变量的,set用于赋值,get用于获取,两者可以同时使用,也可以单独使用。
教学案例源代码下载:
https://download.csdn.net/download/konkon2012/23471862
备注:这是我们游戏开发系列教程的第一个课程,主要是编程语言的基础学习,优先学习C++编程语言,然后进行C#语言,最后才是Java语言,紧接着就是使用C++和DirectX来介绍游戏开发中的一些基础理论知识。我们游戏开发系列教程的第二个课程是Unity游戏引擎的学习。课程中如果有一些错误的地方,请大家留言指正,感激不尽!