跳转至内容

C# 编程/关键字/隐式

来自维基教科书,开放的书籍,开放的世界

当值隐式转换时,运行时不需要开发人员在代码中进行任何转换才能将值转换为其新的类型。

以下是一个示例,其中开发人员在显式转换。

// 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# 关键字
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using var virtual
void volatile while
特殊 C# 标识符(上下文关键字)
add alias async await dynamic
get global nameof partial remove
set value when where yield
上下文关键字(用于查询)
ascending by descending equals from
group in into join let
on orderby select where
华夏公益教科书