C#复习笔记(6)

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);

     }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值