C# 编程/关键字/隐式
外观
< C Sharp 编程 | 关键字
当值隐式转换时,运行时不需要开发人员在代码中进行任何转换才能将值转换为其新的类型。
以下是一个示例,其中开发人员在显式转换。
// Example of explicit casting.
float fNumber = 100.00f;
int iNumber = (int) fNumber;
开发人员已告诉运行时,“我知道我在做什么,强制进行此转换。”
隐式转换意味着运行时不需要任何提示即可进行转换。以下是一个示例。
// Example of implicit casting.
byte bNumber = 10;
int iNumber = bNumber;
请注意,开发人员不需要进行任何转换。隐式转换的特殊之处在于,类型转换到的上下文是完全无损的,即转换到此类型不会丢失任何信息。因此,它可以毫无顾虑地转换回来。
关键字 implicit
用于类型定义如何隐式转换。它用于定义哪些类型可以在没有显式转换的情况下进行转换。
例如,让我们拿一个 Fraction 类,它将保存一个分子(除法符号上方的数字)和一个分母(除法符号下方的数字)。我们将添加一个属性,以便该值可以转换为 float
。
public class Fraction
{
private int nominator;
private int denominator;
public Fraction(int nominator1, int denominator1)
{
nominator = nominator1;
denominator = denominator1;
}
public float Value { get { return (float)_nominator/(float)_denominator; } }
public static implicit operator float(Fraction f)
{
return f.Value;
}
public override string ToString()
{
return _nominator + "/" + _denominator;
}
}
public class Program
{
[STAThread]
public static void Main(string[] args)
{
Fraction fractionClass = new Fraction(1, 2);
float number = fractionClass;
Console.WriteLine("{0} = {1}", fractionClass, number);
}
}
重申一下,它隐式转换到的值必须以原始类可以转换回的形式保存数据。如果这不可能,并且范围被缩小(例如将 double
转换为 int
),则使用显式运算符。
C# 关键字 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
特殊 C# 标识符(上下文关键字) | |||||||||||||||
| |||||||||||||||
上下文关键字(用于查询) | |||||||||||||||
|