search.png
关于我
menu.png
浅学C#(15)——枚举转换、使用Convert进行转换、常量、结构、接口
枚举转换

隐式枚举转换
只允许将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只能出现在嵌套接口中
接口成员定义不能包含任何修饰符
实现接口成员的方法必须是公共的非静态的,与接口成员具有相同的名称和签名

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2019年01月24日 10:59:46

评论区#

还没有评论哦,期待您的评论!

关闭特效