`
sakakokiya
  • 浏览: 507251 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

explicit 和 implicit 的含义?

 
阅读更多
explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换
explicti 表示显式转换,如从 A -> B 必须进行强制类型转换(B = (B)A)
implicit 表示隐式转换,如从 B -> A 只需直接赋值(A = B)
隐式转换可以让我们的代码看上去更漂亮、更简洁易懂,所以最好多使用 implicit 运算符。不过!如果对象本身在转换时会损失一些信息(如精度),那么我们只能使用 explicit 运算符,以便在编译期就能警告客户调用端
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example23
{
class Program
{
//本例灵感来源于大话西游经典台词“神仙?妖怪?”-主要是我实在想不出什么好例子了
class Immortal
{
public string name;
public Immortal(string Name)
{
name = Name;
}
public static implicit operator Monster(Immortal value)
{
return new Monster(value.name + “:神仙变妖怪?偷偷下凡即可。。。”);
}
}
class Monster
{
public string name;
public Monster(string Name)
{
name = Name;
}
public static explicit operator Immortal(Monster value)
{
return new Immortal(value.name + “:妖怪想当神仙?再去修炼五百年!”);
}
}
static void Main(string[] args)
{
Immortal tmpImmortal = new Immortal(”紫霞仙子”);
//隐式转换
Monster tmpObj1 = tmpImmortal;
Console.WriteLine(tmpObj1.name);
Monster tmpMonster = new Monster(”孙悟空”);
//显式转换
Immortal tmpObj2 = (Immortal)tmpMonster;
Console.WriteLine(tmpObj2.name);
Console.ReadLine();
}
}
}
结果:
紫霞仙子:神仙变妖怪?偷偷下凡即可。。。
孙悟空:妖怪想当神仙?再去修炼五百年!
分享到:
评论

相关推荐

    Combining Explicit and Implicit Feature Interactions for Recommender Systems.pdf

    本文的标题《Combining Explicit and Implicit Feature Interactions for Recommender Systems.pdf》和描述表明,文章主题聚焦于推荐系统领域,并且探讨了如何结合显式和隐式的特征交互。这方面的研究对于理解和改善...

    C#中的explicit和implicit了解一下吧(自定义强制转换、隐式转换).txt

    C#中的explicit和implicit了解一下吧(自定义强制转换、隐式转换).txt

    C# 自定义 implicit和explicit转换 demo

    在C#编程语言中,`implicit`和`explicit`转换是两种用户自定义类型转换的方式。它们允许我们创建自己的类型转换规则,使不同类型的变量之间能够进行安全或强制的转换。下面将详细介绍这两种转换方式以及如何在实际...

    实例分享C#中Explicit和Implicit用法

    "C# 中 Explicit 和 Implicit 的用法" 在 C# 中,Explicit 和 Implicit 是两种不同的类型转换操作符,它们用于实现用户定义类型之间的转换。今天,我们将详细探讨这两种操作符的用法和区别。 Implicit 转换操作符 ...

    Implicit-explicit Finite-difference Lattice Boltzmann Method for Compressible Flows

    Implicit-explicit Finite-difference Lattice Boltzmann Method for Compressible Flows,王勇,何雅玲,We propose an implicit-explicit finite-difference lattice Boltzmann method for compressible flows in ...

    HW1_ID345222061_matlab_explicit_implicit_line_conesection_

    标题“HW1_ID345222061_matlab_explicit_implicit_line_conesection_”暗示了这是一个关于使用MATLAB进行显式和隐式线性锥体截面绘制的作业或项目。描述“Draws all possible conical sections according to the ...

    C#基础概念二十五问

    1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? ...23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射?

    C#的25个问题(内附代码示例)

    1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? ...23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射?

    C#中explicit与implicit的深入理解

    C#中explicit与implicit的深入理解 ...C#中的explicit与implicit关键字允许开发者自定义类型之间的转换规则,提高了编程的灵活性和安全性。然而,在使用这些关键字时,开发者需要格外小心,以免出现意外结果。

    常见 ASP.NET 概念(开源,说明)

    1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思?...23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射? shadom@foxmail.com

    你必须知道的C#的25个基础概念(附源码)

    23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射? 以下是我做的一份参考答案(C# 语言范畴之内),如果有不准确、不全面的,欢迎各位朋友指正! 1.静态变量和非静态变量的区别?答:静态...

    Three-dimensional hybrid implicit–explicit

    Abstract: A novel hybrid implicit–explicit (HIE) finite-difference time-domain (FDTD) method, which is extremely useful for problems with very fine structures along the w-direction in cylindrical ...

    MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

    在MySQL 5.6中,`TIMESTAMP`数据类型和`explicit_defaults_for_timestamp`参数是数据库管理和时间戳处理的关键元素。`TIMESTAMP`通常用于记录数据记录的创建或修改时间,而`explicit_defaults_for_timestamp`参数则...

    An Implicit-Explicit Runge--Kutta--Chebyshev Scheme

    2. 隐式-显式方法(Implicit-Explicit Method):这种技术结合了隐式和显式方法的优点,对于问题中的不同部分分别采用隐式或显式求解。在刚性问题中,反应项往往采用隐式方法处理,而对流项或扩散项则可能采用显式...

    C#基础知识25个常见问题.doc

    23.explicit 和 implicit 的含义? explicit用于显式转换,implicit用于隐式转换。 24.params 有什么用? params用于指定函数参数的参数数组。 25.什么是反射? 反射是C#语言中的一个机制,用于在运行期获取...

    c#问题 谁能解释下public static implicit operator float

    在C#中,你可以定义两种类型的转换操作符:隐式 (`implicit`) 和显式 (`explicit`)。这里的`operator float`定义了一个从自定义类型(这里是`currency`)到内置类型`float`的隐式转换规则。换句话说,如果你有一个`...

Global site tag (gtag.js) - Google Analytics