Struct 结构体
**含义:**结构体是变量和函数的数据集合。
声明:
-
结构体关键词是struct,名称用帕斯卡命名法书写;
-
结构体写在namespace语句块中;
-
访问修饰符public和private用来修饰变量和函数,public可以外部调用,private是私有的,只能在内部使用。
结构体内容:
-
变量
1.1 声明变量时不能初始化;只能在外部和函数中赋值;
1.2 变量默认访问修饰符是private类型,需要使用public,这样才能在结构体外部进行访问使用;
1.3 变量类型可以写任何类型,包括结构体,不过不能是自己的结构体。
-
构造函数(可不写)
2.1 构造函数无返回值;
2.2 构造函数名与结构体名一样;可以重载;
2.3 构造函数有参数,是结构体参数;
2.4 构造函数内必须对参数进行赋值;用this关键词来区分构造函数的内部参数与传入的外部参数;
2.5 构造函数主要用来快速初始化结构体对象的。
-
函数
3.1 函数用来执行具体的语句;表现这个数据结构的行为;
3.2 可以根据需求写无数个函数;
3.3 函数体中可以直接使用结构体内部声明的变量。
结构体使用:
- 先声明一个结构体变量;例如:StructName = hhh;//StructName = StructVariableName;
- 使用结构体变量名加.来调用结构体中的变量和函数;例如:hhh.name = “124”;//StructVariableName.VariableName = value;
- 通过结构体与其构造函数可以快速创建一个结构体变量;例如:Student s = new Student(“ahfha”,13,true,123);
练习题:
namespace 结构体
{
//练习题一
//使用结构体描述矩形的信息:长、宽;
//创建一个矩形,对其长宽进行初始化,并打印矩形的长、宽、面积、周长等信息。
struct Rectangle
{
public int length;
public int width;
public Rectangle(int length, int width)
{
this.length = length;
this.width = width;
}
public void Func()
{
int area = length*width;
int perimeter = 2*length+2* width;
Console.WriteLine("输入的矩形的长为:{0},宽为:{1},面积为:{2},周长为:{3}",length,width,area,perimeter);
}
}
//练习题二
//使用结构体描述玩家信息,玩家名字,玩家职业
//请用户输入玩家姓名,选择玩家职业,最后打印玩家的攻击信息
//职业:
//战士(技能:冲锋)
//猎人(技能:假死)
//法师(技能:奥术冲击)
//打印结果:猎人杰瑞释放了假死
struct Player
{
public string name;
public string profession;
public Player(string name,string profession)
{
this.name = name;
this.profession = profession;
}
public void AttackInfo()
{
string skill = "";
switch (profession)
{
case "战士":
skill = "冲锋";
break;
case "猎人":
skill = "假死";
break;
case "法师":
skill = "奥术冲击";
break;
}
Console.WriteLine("{0}{1}释放了{2}", profession, name, skill);
}
}
//练习题三
//使用结构体描述小怪兽
//定义一个数组存储10个上面描述的小怪兽,每个小怪兽的名字为(小怪兽+数组下标)
//举例:小怪兽0,最后打印出10个小怪兽的名字+攻击力数值
struct LittleMonster
{
public void Func1()
{
string[] monsterName = new string[10];
int[] monsterAbility = new int[10];
for (int i = 0; i < 10; i++)
{
monsterName[i] = "小怪兽" + i;
monsterAbility[i] = 100*i+100;
Console.WriteLine("{0}攻击力{1}", monsterName[i], monsterAbility[i]);
}
}
}
internal class Program
{
static void Main(string[] args)
{
//练习题一
Rectangle rectangle = new Rectangle(30,40);
rectangle.Func();
//练习题二
Player playerInfo = new Player("杰瑞","法师");
playerInfo.AttackInfo();
//练习题三
LittleMonster littleMonster;
littleMonster.Func1();
}
}
}