结构
结构是值类型数据结构,它使变量可以保存各种数据类型的相关数据,用struct关键字来创建结构。结构代表一个记录,比如你想记录一个人的各种属性:
- 姓名
- 性别
- 年龄
- 爱好
定义结构
用struct语句来定义一个带有多个成员的新的数据类型,比如声明一个person结构:(如果该名字表示的是结构体里面的名字,这需要在名字前加’_’)
struct Person
{
public string _name; //表示姓名
public char _gender; //表示性别
public int _age; //表示年龄
public string _hobby; //表示爱好
}
下面程序将演示结构的使用:
using System;
namespace test
{
//结构是值类型数据结构,它使单一变量可以存储各种数据类型的数据,用struct关键字来创建
struct Person
{
public string _name; //姓名
public char _gender; //性别
public int _age; //年龄
public string _hobby; //爱好
}
class Program
{
static void Main(string[] args)
{
Person aPerson; //声明aPerson,类型为Person
Person bPerson; //声明bPerson,类型为Person
/* aPerson 详述 */
aPerson._name = "小红";
aPerson._gender = '女';
aPerson._age = 12;
aPerson._hobby = "喜欢唱歌";
/* bPerson 详述 */
bPerson._name = "小明";
bPerson._gender = '男';
bPerson._age = 15;
bPerson._hobby = "喜欢跳舞";
/* 打印aPerson的信息 */
Console.WriteLine("姓名:{0}\n性别:{1}\n年龄:{2}\n爱好:{3}",aPerson._name,aPerson._gender,aPerson._age,aPerson._hobby);
Console.WriteLine();
/* 打印bPerson的信息 */
Console.WriteLine("姓名:{0}\n性别:{1}\n年龄:{2}\n爱好:{3}", bPerson._name, bPerson._gender, bPerson._age, bPerson._hobby);
}
}
打印结果如下:
姓名:小红
性别:女
年龄:12
爱好:喜欢唱歌
姓名:小明
性别:男
年龄:15
爱好:喜欢跳舞
请按任意键继续. . .
C# 结构的特点
您已经用了一个简单的名为 Books 的结构。在 C# 中的结构与传统的 C 或 C++中的结构不同。C# 中的结构有以下特点:
- 结构可带有方法、字段、索引、属性、运算符方法和事件。
- 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义默认的构造函数。默认的构造函数是自动定义的,且不能被改变。
- 与类不同,结构不能继承其他的结构或类。
- 结构不能作为其他结构或类的基础结构。
- 结构可实现一个或多个接口。
- 结构成员不能指定为 abstract、virtual 或 protected。
- 当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
- 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。
枚举
枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。
C# 枚举是值数据类型。换句话说,枚举包含自己的值,且不能继承或传递继承。
声明enum变量:
一般语法
enum <enum_name>
{
enumeration list
};
- enum_name 表示枚举类型的名字
enumeration 表示标识符列表
枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0.
实例
using System;
namespace EnumApplication
{
class EnumProgram
{
enum Gender {
男,
女
};
static void Main(string[] args)
{
int GenderNan = (int)Gender.男;
int GenderNv = (int)Gender.女;
Console.WriteLine("Monday: {0}", GenderNan );
Console.WriteLine("Friday: {0}", GenderNv );
Console.ReadKey();
}
}
}
当上面的代码被编译和执行时,它会产生下列结果:
GenderNan: 0
GenderNv: 1