C#实现自定义类型的转换(无论显式还是隐式),需要在转换目标类中添加一个带转换类参数的转换运算符。
下面举个栗子:
首先创建两个自定义Class,文化和体育(文体两开花)备用
//文化类
class Culture
{
public string movie;
}
//体育类
class Sports
{
public string motion;
}
显式转换
在main()中创建它们的实例,进行显式强制转换,并在文化类添加显式转换运算符:
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Culture culture = new Culture();
Sports sports = new Sports();
sports.motion = "今年下半年,中美合拍";
//显式转换
culture = (Culture)sports;
//打印culture.movie
Console.WriteLine(culture.movie);
}
}
//文化类
class Culture
{
public string movie;
//显式转换运算符
public static explicit operator Culture(Sports v)
{
Culture culture = new Culture();
culture.movie = v.motion+"《西游记》,弘扬传统文化";
return culture;
}
}
//体育类
class Sports
{
public string motion;
}
}
隐式转换
同样的道理, 在main()中创建它们的实例,进行隐式强制转换,并在文化类添加隐式转换运算符即可:
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Culture culture = new Culture();
Sports sports = new Sports();
sports.motion = "今年下半年,中美合拍";
//隐式转换
culture = sports;
//打印culture.movie
Console.WriteLine(culture.movie);
}
}
//文化类
class Culture
{
public string movie;
//隐式转换运算符
public static implicit operator Culture(Sports v)
{
Culture culture = new Culture();
culture.movie = v.motion + "《西游记》,弘扬传统文化";
return culture;
}
}
//体育类
class Sports
{
public string motion;
}
}
碎碎念:visual studio是一款功能强大的IDE,这里提供了自动补全转换运算符的功能。如下图:(显示应该是显式?)