今天来分享下数组,枚举,结构体,以及值类型和引用类型的区别。
什么是数组
数组是一个存储相同类型元素的有可变大小的顺序集合,数组是用来存储数据的结合,通常认为数组是一个同一类型变量的集合。
声明数组变量就是将原本需要一个个单独声明的变量比如:num1,num2…转换成声明一个nums这样的变量,然后再通过num[0]…来表示原本单独的变量,并通过索引的方式访问数组中的某个元素。
在物理上,数组是由一连串的内存地址组成,最小的地址对应数组中的第一个元素,最高的对应最后一个元素。可见想要知道数组中某个元素的值就必须先引用相应的元素所在的地址,因此数组是引用类型的。
声明方式
int [] nums1 = new int [10]; //声明长度为10 ,元素个数为10,索引为0-9,int类型
int [] nums2 =new int []{1,2,3,4,5}; //声明存五个值得数组,索引0-4,int类型,分别为1,2,3,4,5
int [] nums3 = new int[3]{1,2,3}; // 声明长度为3,元素为3,索引为0-2
int [] nums4 = {1,2,3,4,5}; //声名长度为5,元素为5,所因为0-4
什么是枚举
枚举是一组被命名的整形常量,枚举类型是通过 " enum " 关键字声明的,关键字enum的全拼为enumeration。
namespace 枚举
{
public enum Gander
{
男,女
}
public enum BanJi
{
一班,二班,三班,四班,五班
}
class Program
{
static void Main(string [] args)
{//枚举值转int 类型,存入数字,写入数字将枚举值显示出来。
BanJi banji = BanJi.四班; //BanJi的初值为一班,将一班的值替换为四班。
int num = (int)banji; //将枚举值转换为数字,班级的值为四班则索引为3
BanJi h = (BanJi)3; //将数字转换为枚举值,通过数字将枚举值付给枚举变量
Gander g = (Gender)(Enum.Parse(typeof(Gander),Console.ReadLine()));
//将输入的字符串转换为枚举类型的值。
Console.WriteLine(g); //将变量g写入到控制台上
Console.ReadKey();
}
}
}
什么是结构体
在C#中,结构体是值类型的数据结构,它使得一个单一变量可以存储各种数据类型的相关数据。关键字struct关键字用于创建结构体。
namespace
{
public enum Gander //在namespace声明一个名为Gander的枚举
{
男, //枚举值
女
}
public struct Person //在namesace声明一个名为Person的结构体,一次性声明多个变量。
{
public string _name;
public Gander _gander;
public int _age;
}
class Program
{
static void Main(string [] args)
{
Person lfPerson; //定义结构体变量
lfPerson._name = "AMD User"
lfPerson._gander = Gander.男;
lfPerson._age = 22;
}
}
}
值类型(引用类型)
值类型与引用类型的区别在于,它们使用的的内存位置不同。值类型的数据存储在栈上,而引用类型的数据则存储在堆上。
另一个区别就是值类型的数据结构中包含值,而引用类型的数据结构则是引用该值在内存中实际存储的位置。
可见引用类型并不直接存储值,它实际上存储的是对一个内存地址的引用,只有引用了那个内存地址才能找到真正的数据。