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

所属分类: 软件编程 / C#教程 阅读数: 57
收藏 0 赞 0 分享

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

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

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

在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关键字做自定义类型隐式转换的方法,希望对大家有所帮助。

 

更多精彩内容其他人还在看

C# SendInput 模拟鼠标操作的实现方法

C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中 paint()与Onpaint()的区别

paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
收藏 0 赞 0 分享

c#中GetType()与Typeof()的区别

c#中GetType()与Typeof()的区别,需要的朋友可以参考一下
收藏 0 赞 0 分享

将字符串转换成System.Drawing.Color类型的方法

将字符串转换成System.Drawing.Color类型的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# 抓取网页内容的方法

C# 抓取网页内容的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

基于C#后台调用跨域MVC服务及带Cookie验证的实现

本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下
收藏 0 赞 0 分享

使用C#获取远程图片 Form用户名与密码Authorization认证的实现

本篇文章介绍了,使用C#获取远程图片 Form用户名与密码Authorization认证的实现。需要的朋友参考下
收藏 0 赞 0 分享

Winform跨线程操作的简单方法

线程间操作无效:从不是创建控件“label1”的线程访问它
收藏 0 赞 0 分享

C# WINFORM 强制让窗体获得焦点的方法代码

C# WINFORM 强制让窗体获得焦点的方法代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中方括号[]的语法及作用介绍

C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。
收藏 0 赞 0 分享
查看更多