C#复习笔记(6) --C#中的转换

Posted on 2006-09-15 23:28  raekwon  阅读(142)  评论(0)    收藏  举报
 

explicit与implicit必须声明为static和public

using System;

struct RomanNumeral

{

     
public RomanNumeral(int value) 

     


         
this.value = value; 

     }


     static
 public implicit operator RomanNumeral(int value) 

     
{

         
return new RomanNumeral(value);

     }


     static
 public explicit operator int(RomanNumeral roman)

     
{

         
return roman.value;

     }


     static
 public implicit operator string(RomanNumeral roman)

     
{

         
return("Conversion not yet implemented");

     }


     private
 int value;

}


 

class Test

{

     
static public void Main()

     
{

         RomanNumeral numeral;

 

         numeral 
= 10;

 

         
// 显式地从numeral到int的转换

         Console.WriteLine((
int)numeral);

 

         
// 隐示地转换到string

         Console.WriteLine(numeral);

 

         //
 显示地转换到int,然后显示地转换到short

         short
 s = (short)numeral;

 

         Console.WriteLine(s);

 

     }


}


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

using System;

 

struct RomanNumeral

{

     
public RomanNumeral(int value) this.value = value; }

     static
 public implicit operator RomanNumeral(int value)

     
{return new RomanNumeral(value);}

     static
 public implicit operator

         RomanNumeral(BinaryNumeral binary)

     
{return new RomanNumeral((int)binary);}

     static
 public explicit operator int(RomanNumeral roman)

     
{return roman.value;}

     static
 public implicit operator string(RomanNumeral roman) 

     
{return("Conversion not yet implemented");}

     private
 int value;

}


 

struct BinaryNumeral

{

     
public BinaryNumeral(int value) {this.value = value;}

 

     static
 public implicit operator BinaryNumeral(int value)

     
{return new BinaryNumeral(value);}

     static
 public implicit operator string(BinaryNumeral binary)

     
{return("Conversion not yet implemented");} 

     
static public explicit operator int(BinaryNumeral binary)

     
{return(binary.value);}

 

     private
 int value;

}


 

class Test

{

     
static public void Main()

     
{

         RomanNumeral roman;

         roman 
= 10;

         BinaryNumeral binary;

         binary 
= (BinaryNumeral)(int)roman;

         roman 
= binary;

         Console.WriteLine((
int)binary);

         Console.WriteLine(binary);

     }


}

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3