在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变为强制转换。
新闻热点
疑难解答