class Program
{
class student
{
public student(string _name, int _id)
{
name = _name;
id = _id;
}
public string name;
public int id;
}
private static void printMsg(object[] obj)
{
student stu = (student)obj[4];
Console.Write("name:" + stu.name + "\nid:" + stu.id);
}
static void Main(string[] args)
{
student stu = new student("su", 10);
int[] arr = new int[100]; //跟c++不一样 int arr[100];
int[] arr1 = new int[4] { 1, 2, 3, 4 };//初值数量为声明的数组长度
int[] arr2 = { 1, 2, 3, 4 };//更简单的形式
//访问元素
Console.WriteLine(arr[0]);
Console.WriteLine(arr[45]);//未指定初值则默认初值为0
//引用类型数组
student[] stus = new student[100];
student[] stus1 = new student[100];
stus1[4] = new student("student", 1); //给引用类型分配内存
// Console.WriteLine(stus[4].name); // new 出一个数组还没有给引用类型赋内存,不能这样访问
Console.WriteLine(stus1[4].name); //分配内存后可以使用
//数组的遍历
foreach (var value in arr)
{
Console.WriteLine(value);
}
//多维数组
int[,] arrs = new int[3,4];//跟c++不一样 int[6][7]
//声明之后赋初值
arrs[0, 0] = 1;
arrs[0, 3] = 3;
int[,] arrs1 ={ {1,2,3,4 },{3,4,5,6 },{5,6,7,8 } };//声明的时候赋初值
//Array类
// Array ar = new Array(); //Array类是抽象类,不能用构造函数创建数组
Array ar = Array.CreateInstance(typeof(int), 6);//用CreateInstance创建Array类,关键字typeof指明类型
//创建引用类型的Array
Array arStu = Array.CreateInstance(typeof(student), 6);
//设定初值
ar.SetValue(3, 3);
arStu.SetValue(new student("", 100), 1);
//数组作为函数参数,支持协变
printMsg(stus1);
}