C# implicit和explicit关键字的用法--学习笔记

1. 什么是“implicit”和“explicit”呢?

implicit:关键字是用来声明隐式的用户定义类型转换运算符。当然隐式转换可以通过不必要的类型转换来提高源代码的可读性。
explicit:关键字反之则用于显示转换用户自定义类型。

2. 用法:
implicit的用法:
实现Food类和Noodle类之间的相互转换(写出Food和Noodle的实现,让下面的代码不会抛出空异常)

static void Main(string[] args){
  Noodle noodle=(Food)null;
  noodle.Name="兰州拉面";
  Console.WriteLine(noodle.Name);
}

定义食物类

public class Food{ }

定义面条类

public class Noodle{
  //食物名称
  public string Name{get;set;}
  //将Food类隐式的转换为Noodle类
  public static implicit operator Noodle(Food food){
    return new Noodle();
  }
}

在这里插入图片描述
explicit的用法:
实现显式和隐式之间的相互转换,如下:

static void Main(string[] args){
  Console.WriteLine("======隐式转换======");
  ImplicitAndExplicit model=1.25;
  Console.WriteLine(model);
  Console.WriteLine("======显式转换======");
  ImplicitAndExplicit new_model = (double)model;
  Console.WriteLine(new_model);
}

定义一个ImplicitAndExplicit类

class ImplicitAndExplicit{
  private int member1;
  private double member2;
  //无参构造函数
  public ImplicitAndExplicit(){
    this.member1=0;
    this.member2=0.0;
  }
  //有参构造函数
  public ImplicitAndExplicit(double m){
    double f;
    f=3.28*m;
    this.member1=(int)f;
    this.member2=12*(f-this.member1);
  }
 //由一个double隐式构造一个ImplicitAndExplicit类
  public static implicit operator ImplicitAndExplicit(double m){
     return new ImplicitAndExplicit(m);
  }
  //由一个ImplicitAndExplicit显式返回一个double
  public static explicit operator double(ImplicitAndExplicit m){
     double f;
     f=m.member2/12+(double)m.member1;
     return (m/3.28);
  }
  //重写ToString方法
  public override string ToString(){
    return $"{member1}米和{member2}厘米";
  }
}

在这里插入图片描述
总结:不管是implicit还是explicit关键字,都必须用static和operator关键字进行修饰。语法如下:

public static implicit/explicit operator xxxxx(){ ...... }

以上代码全是本人用手打上去的,如果有错误请指出哈。再见。

不求与人相比,但求超越自己,要哭就哭出激动的泪水,要笑就笑出成长的性格!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值