枚举转换
隐式枚举转换
只允许将0转换为枚举类型变量Color a; a=0;
显式枚举转换Color a=Color.red; int x=(int) a;
enum Color
{
red, green=4, blue
}
class Test
{
static void Main()
{
Color a = Color.green;
Console.WriteLine("a equals:{0}", a);
a = 0;
Console.WriteLine("a equals:{0}", a);
int x = (int)Color.blue;
Console.WriteLine("x={0}", x);
}
}
使用Convert进行转换
Convert.ToBoolean( ) 转换为bool
Convert.ToByte( ) 转换为byte
Convert.ToChar( ) 转换为char
Convert.ToString( ) 转换为string
Convert.ToDecimal( ) 转换为decimal
Convert.ToDouble( ) 转换为double
Convert.ToInt16 转换为short
Convert.ToInt32 转换为int
Convert.ToInt64 转换为long
Convert.ToSByte 转换为sbyte
Convert.ToSingle 转换为float
Convert.ToUInt16 转换为ushort
Convert.ToUInt32 转换为uint
Convert.ToUInt64 转换为ulong
常数声明
[常数修饰符] const 类型 标识符=常数表达式
常数修饰符可以是new、public、protected、internal、 private、protected internal
默认访问修饰符为private
常量表达式的值应是一个可以在编译时计算的值
常数声明不允许使用static修饰符
常数和静态成员一样只能通过类名访问
using System;
class A_const
{
public const int x = 10;
//static const double pi = 3.14159;
static Random r=new Random();
//const int y = r.Next();
}
class B : A_const
{
public new const int x = 20;
}
public class ConstExp
{
public static void Main()
{
A_const aa = new A_const();
//Console.WriteLine(aa.x);
Console.WriteLine(A_const.x);
Console.WriteLine(B.x);
Console.ReadLine();
}
}
结构
结构保存在栈区,对象保存在堆区
除了包含有数据成员,还有构造函数、方法、属性、事件、索引等成员
结构可以实现多个接口
结构类型的封箱
struct A
{
public int x, y;
public A(int a, int b)
{
x = a;
y = b;
}
}
class Test
{
static void Main()
{
A a = new A(1, 2);
object b = a;
}
}
对于结构和基本数据类型,都对应相应的封箱类型。
不能在程序中直接访问封箱对象,它们是在后台工作的对象。
进行向上类型转换时,在堆中创建一个封箱对象实例,并令object引用指向该实例
进行向下类型转换时,根据封箱对象在栈中创建一个结构实例
结构和类的区别
接口
接口包含方法、属性、事件和索引器,不能包含常数、字段、运算符、实例构造函数、析构函数或类型
,也不能包含静态成员
接口的修饰符可以是public、protected、internal、private、new,new只能出现在嵌套接口中
接口成员定义不能包含任何修饰符
实现接口成员的方法必须是公共的
、非静态
的,与接口成员具有相同的名称和签名
版权声明
本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途
评论区#
还没有评论哦,期待您的评论!
引用发言