implicit

王朝百科·作者佚名  2010-08-28  
宽屏版  字体: |||超大  

implicit关键字用于声明隐式的用户定义类型转换运算符。如果转换过程可以确保不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。

备注

隐式转换可以通过消除不必要的类型转换来提高源代码的可读性。但是,因为隐式转换不需要程序员将一种类型显式强制转换为另一种类型,所以使用隐式转换时必须格外小心,以免出现意外结果。一般情况下,隐式转换运算符应当从不引发异常并且从不丢失信息,以便可以在程序员不知晓的情况下安全使用它们。如果转换运算符不能满足那些条件,则应将其标记为explicit。

class Digit

{

public Digit(double d) { val = d; }

public double val;

// ...other members

// User-defined conversion from Digit to double

public static implicit operator double(Digit d)

{

return d.val;

}

// User-defined conversion from double to Digit

public static implicit operator Digit(double d)

{

return new Digit(d);

}

}

class Program

{

static void Main(string[] args)

{

Digit dig = new Digit(7);

//This call invokes the implicit "double" operator

double num = dig;

//This call invokes the implicit "Digit" operator

Digit dig2 = 12;

Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val);

Console.ReadLine();

}

}

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有