[C#] C#如何定义与类或结构之间的转换 →→→→→进入此内容的聊天室

来自 , 2020-08-09, 写在 C#, 查看 127 次.
URL http://www.code666.cn/view/60e1deb0
  1. // conversion.cs
  2. using System;
  3.  
  4. struct RomanNumeral
  5. {
  6.     public RomanNumeral(int value)
  7.     {
  8.        this.value = value;
  9.     }
  10.     // 声明从 int 到 RomanNumeral 的转换。请注意
  11.     // operator 关键字的使用。这是名为
  12.     // RomanNumeral 的转换运算符:
  13.     static public implicit operator RomanNumeral(int value)
  14.     {
  15.        // 请注意,由于 RomanNumeral 声明为结构,
  16.        // 因此对该结构调用 new 只是调用构造函数
  17.        // 而不是在堆上分配对象:
  18.        return new RomanNumeral(value);
  19.     }
  20.     // 声明从 RomanNumeral 到 int 的显式转换:
  21.     static public explicit operator int(RomanNumeral roman)
  22.     {
  23.        return roman.value;
  24.     }
  25.     // 声明从 RomanNumeral 到
  26.     // string 的隐式转换:
  27.     static public implicit operator string(RomanNumeral roman)
  28.     {
  29.        return("Conversion not yet implemented");
  30.     }
  31.     private int value;
  32. }
  33.  
  34. class Test
  35. {
  36.     static public void Main()
  37.     {
  38.         RomanNumeral numeral;
  39.  
  40.         numeral = 10;
  41.  
  42. // 调用从 numeral 到 int 的显式转换。由于是显式转换,
  43. // 因此必须使用强制转换:
  44.         Console.WriteLine((int)numeral);
  45.  
  46. // 调用到 string 的隐式转换。由于没有
  47. // 强制转换,到 string 的隐式转换是可以考虑的
  48. // 唯一转换:
  49.         Console.WriteLine(numeral);
  50.  
  51. // 调用从 numeral 到 int 的显式转换,
  52. // 然后调用从 int 到 short 的显式转换:
  53.         short s = (short)numeral;
  54.  
  55.         Console.WriteLine(s);
  56.     }
  57. }
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. //csharp/4929

回复 "C#如何定义与类或结构之间的转换"

这儿你可以回复上面这条便签

captcha