C#入门总结第三章(变量的更多内容)
1、类型之间进行隐式和显示转换
(1)隐式转换不需要在代码中指定转换类型;
int intNumber = 10; double doubleNumber = intNumber; intNumber会被隐式转换成double类型。
(2)显式转换则相反,需要指定转换类型
double doubleNumber = 10.1; int intNumber = (int)doubleNumber;
对于表示数值的基本数据类型来说,数值范围小的数据类型转换成数值范围大的数据类型可以进行隐式转换,而反过来则必须进行显示转换;
对于类类型来说,子类转换成父类可以进行隐式转换,而反过来则必须进行显式转换,例如:string str1 = "abc"; object obj = str1; //子类转换成父类; 隐式转换string str2 = (string)obj;//父类转换成子类
如果两个类之间没有继承关系,则不能进行隐式转换或显式转换,此时必须在被转换的类中定义一个隐式转换方法或显式转换方法。
2、创建和使用枚举类型
(1)枚举是由一组特定常量构成的一组数据结构,是值类型的一种特殊形式,当需要一个由指定常量集合组成的数据类型时,使用枚举类型。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明枚举类型默认为int类型,枚举内每个值得顺序从0开始;
(2)枚举的使用场景:.NET中的枚举我们一般有两种常见用法,一是表示唯一的元素序列,例如一周里的各天,订单状态,文章类型等;还有就是用来表示多种复合的状态,例如表示权限,因为可同时有多个不同权限。
(3)枚举的定义:使用enum关键字类定义枚举
public enum Sex { 男 = 0, 女 = 1 }
下面定义一个带类型的枚举
public enum orientation : byte
{
north = 1,
south = 2,
east = 3,
west = 4
}
public static void Main(string[] args)
{
byte directionByte; string directionString;
Orientation orientation = Orientation.north;
directionByte = (byte)orientation;
directionString = orientation.ToString();
Console.WriteLine("orientation={0}", orientation);
Console.WriteLine("byte equivalent={0}", directionByte);
Console.WriteLine("string equivalent={0}", directionString);
Console.ReadKey();
}
执行结果:
3、如何创建和使用结构类型
(1) 结构的定义: 结构就是由几个数据组成的数据结构,这些数据可能具有不同的类型。根据这个结构,可以定义自己的变量类型。
使用struct关键字来定义结构
struct<typeName>
{ <memberDeclarations> }
(2)结构的应用场景:有时候,类中只包含极少的数据,因为管理堆而造成的开销显得极不合算。这种情况下,更好的做法是使用结构(struct)类型。由于 struct 是值类型,是在栈(stack)上存储的,所以能有效的减少内存管理的开销;
(3)结构的使用
class Program
{
static void Main(string[] args)
{
Time now = new Time(12, 30);
}
}
struct Time
{
private int hours, minutes, seconds;
public Time(int hh, int mm)
{
hours = hh;
minutes = mm;
seconds = 0;
}
}
-------------------------------------------理解不对的地方还请指出------------------------------------------------------

浙公网安备 33010602011771号