C#-结构与枚举

C#-结构与枚举

1.类和结构的区别
1.1 不同点:  
     类型:类是引用类型,结构是值类型.
     继承:类可继承,结构不能继承.结构不能继承其他的结构和类,或是被用作其他结构或类的基类.
     构造方法与析够函数:结构可以定义构造方法,但不能定义析够函数.类既可以定义构造方法,也可定义析够函数.
1.2相同点
     对象创建:可以使用new进行初始化,或进行手工初始化.类和结构都可以.
     结构与接口:结构可以实现一个或多个接口. 如上:public struct BookComponent:IBook{  //....}.
     多态: 结构与接口之间是支持多态的.如上面的结构实现接口为例,多态:IBook book = new BookComponent();

2.枚举
2.1
public enum Season
{
    SPRING,   //春天
    SUMMER,   //夏天
    AUTUMN,   //秋天
    WINTER    //冬天
}


public enum SeasonTwo
{
   SPRING = 0,   //春天
    SUMMER = 1,   //夏天
    AUTUMN = 2,   //秋天
    WINTER = 3    //冬天
}

用到时Console.WriteLine(Season.AUTUMN);    
            Console.WriteLine(SeasonTwo.AUTUMN);  

 FontStyle BtnFont = ( FontStyle)(Enum.Parse(typeof(FontStyle),“Bold”));
 
 简单文本编辑器
private   void  SetStyle( object  sender,EventArgs e)
{           
    ToolStripButton btn 
=  sender  as  ToolStripButton;
    FontStyle fontStyleContent 
=   this .rchTxtContent.SelectionFont.Style;
    FontStyle BtnFont 
=  ( FontStyle)(Enum.Parse( typeof (FontStyle),btn.Tag.ToString()));
    
if  ((fontStyleContent  |  BtnFont)  ==  fontStyleContent)
   {
       fontStyleContent 
=   ~ BtnFont  &  fontStyleContent;
   }
    
else
    {
        fontStyleContent 
=  fontStyleContent  |  BtnFont;
   }
    
this .rchTxtContent.SelectionFont  =   new  Font( this .rchTxtContent.SelectionFont.FontFamily,
                                                
this .rchTxtContent.SelectionFont.Size,
                                                fontStyleContent,
                                                
this .rchTxtContent.SelectionFont.Unit);
}

2.2对象的形式实现
何为对象的形式实现呢? 其实这个很简单,也就是将需要枚举的标识定义在对象里,通过对象的特性将其封装.详细如下代码
public   class  SeasonOne
{
    
public   static   readonly  SeasonOne SPRING  =   new  SeasonOne( " 春天 " );
    
public   static   readonly  SeasonOne SUMMER  =   new  SeasonOne( " 夏天 " );
    
public   static   readonly  SeasonOne AUTUMN  =   new  SeasonOne( " 秋天 " );
    
public   static   readonly  SeasonOne WINTER  =   new  SeasonOne( " 冬天 " );

   
public  SeasonOne( string  name)
    {
        
this .name  =  name;
    }

    
// 成员
     private   string  name;
    
public   string  Name
    {
        
get  {  return  name; }
        
set  { name  =  value; }
    }
}

用到时 Console.WriteLine(SeasonOne.AUTUMN.Name);

3.java中枚举的高级用法(略,见下链接)
来自:http://www.cnblogs.com/beniao/archive/2008/07/27/1249029.html

你可能感兴趣的:(C#)