欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

implicit关键字做自定义类型隐式转换的方法

程序员文章站 2023-12-10 23:37:04
 隐式转换可以通过消除不必要的类型转换来提高源代码的可读性。但是,因为隐式转换不需要程序员将一种类型显式强制转换 为另一种类型,所以使用隐式转换时必须格外小心,...

 隐式转换可以通过消除不必要的类型转换来提高源代码的可读性。但是,因为隐式转换不需要程序员将一种类型显式强制转换

为另一种类型,所以使用隐式转换时必须格外小心,以免出现意外结果。一般情况下,隐式转换运算符应当从不引发异常并且

从不丢失信息,以便可以在程序员不知晓的情况下安全使用它们。

在c#中,implicit关键字可以用来做自定义类型隐式转换。下面给个例子来说明。

 定义一个point类,表示一个点:

复制代码 代码如下:

public class point
  {
    public double x { get; set; }
    public double y { get; set; }
  }

  再在point类中定义一个静态方法,用于由字符串隐式转换为point类型:

public class point
 {
  public double x { get; set; }
  public double y { get; set; }
  public static implicit operator point(string constvalue)
  {
   var result = new point();
   try
   {
    var arpoint = constvalue.split(new[] {","}, stringsplitoptions.removeemptyentries);
    result.x = convert.todouble(arpoint[0]);
    result.y = convert.todouble(arpoint[1]);
   }
   catch
   {
    result.x = 0;
    result.y = 0;
   }
   return result;
  }
 }

使用的过程非常简单,就跟我们平时的隐式转换一样:   

复制代码 代码如下:

point p = "3,4.5";
      console.writeline("x:{0}, y:{1}", p.x, p.y);

 注意,尽量隐式转换过程中不会出错,或者能处理异常情况。否则请使用explicit变为强制转换。

 以上就是implicit关键字做自定义类型隐式转换的方法,希望对大家有所帮助。