利用implicit关键字干自定义类型隐式转换

利用implicit关键字做自定义类型隐式转换

    在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变为强制转换。