C# 编程学习系列(九)结构体
2021-12-17 14:39:45
浏览数 (2880)
1、结构体创建
结构体的创建需要使用 struct
关键字来声明,结构体中可以有不同类型的变量:
struct role{
public string name;
public int age;
}
虽然结构体和数组一样是可以存储多个值,但是它们的数据类型是不同的,数组是属于引用类型,而结构体是属于值类型:
role role1;
... // 笔者懒,就省略了所有赋值的步骤
if(role1 is System.ValueType){
Console.WriteLine("结构体是值类型");
}
else{
Console.WriteLine("结构体是引用类型");
}
注意:在这里想要使用 role1
,首先保证 role1
里面的所有变量都已经赋值。只要有一个没有赋值,它就会产生报错。
2、结构体中的其他类型
(1)数组
结构体里面除了可以声明变量,同时也可以声明数组:
struct role{
public string[] food;
}
static void Main(string[] args){
role role1;
role1.food = new string[]{ "小笼包 ", "菜包", "肉包" };
}
(2)对象
可以声明对象:
struct role{
public object obj;
}
static void Main(string[] args){
role role1;
role1.obj = 123;
}
(3)类
还可以声明类:
class c1{
struct role{
public c2 c2;
}
static void Main(string[] args){
role role1;
role1.c2 = new c2();
}
}
class c2{
public string name = "xxx";
public void method(){
Console.WriteLine("成员方法");
}
}
(4)结构
结构体除了可以声明许多数据类型,结构作为数据类型的一种,也是可以被声明:
struct role{
public string rname;
public struct skill{
public string sname;
}
}
static void Main(string[] args){
role role1;
role1.rname = "乔峰";
role.skill s1;
s1.sname = "降龙十八掌";
Console.WriteLine("{0}正在使用{1}", role1.rname, s1.sname);
// 乔峰正在使用降龙十八掌
}
(5)方法
除了可以声明各种数据类型,结构体里面还可以声明方法:
struct role{
public void sayHello(){
Console.WriteLine("Hello everyone");
}
}
static void Main(string[] args){
role role1;
role1.sayHello();
}
3、总结
关于以上内容学习的总结:
(1)结构体的创建,必须使用 struct
关键字来声明。
(2)在使用结构体的时候,结构体中声明的内容必须要赋值。
(3)结构体里面可以声明变量、数组、对象、类、结构体和方法。
关于学习的疑惑:
(1)结构体中并不是所有的值都需要,有时候某部分的值仅需要默认值,该怎么处理?
(2)结构体里面声明对象和类的具体使用是哪一些方面的?
(3)为什么在使用结构体里面的数组,不能省略new
关键字,否则会产一些奇怪报错。