using System; //implicit隐式转换,需要时调用转换。explicit显示转换,需要时调用转换。
//隐式转换简单漂亮,多用隐式转换。如果对象本身在转化时损失一些精信息,如精度,则用显示转化以提醒客户调用端。
class MyClass
{
public static implicit operator MyClass(int z) //将数值放入方法等的里储存起来。
{
MyClass b = new MyClass();
b.TheValue = z;
return b;
}
public static implicit operator int(MyClass x) //将方法等内的数值输出
{
return x.TheValue;
}
public int _theValue;
public int TheValue
{
get { return _theValue; }
set { _theValue = value; }
}
}
class program
{
static void Main()
{
MyClass c = 500; //500转化成MyClass型了,但c还是MyClass型!
int d = c;
Console.WriteLine("c={0}",c.TheValue);
Console.WriteLine("d={0}",d);
}
}
using System; //运算符重载
class MyClass
{
public int a1;
int a2=10;
int _theValue;
public int TheValue
{
set
{
if (value < a2)
_theValue = value;
else
_theValue = value < 100
? 50
: 100;
}
get {return _theValue; }
}
public static MyClass operator -(MyClass x1)
{
MyClass M = new MyClass();
M.a1 = 0;
return M;
}
public static MyClass operator -(MyClass x2,int v2)
{
MyClass M = new MyClass();
M.a1 = x2.TheValue - v2;
return M;
}
}
class program
{
static void Main()
{
MyClass M1 = new MyClass();
MyClass M2 = new MyClass();
MyClass M3 = new MyClass();
M1.TheValue = 30;
M2.TheValue = 130;
Console.WriteLine("M1={0},M2={1}",M1.TheValue, M2.TheValue);
M3 = -M1;
Console.WriteLine("M3={0}", M3.TheValue);
int a3 = 60;
M3 = M1 - a3;
Console.WriteLine("M3={0}", M3.a1); //此处要访问a1,所以a1要public
}
}
/*实际上运算符重载是定义了一个操作方法,即先定义操作方法,便可在运算时直接运算类(不需要对其中的参数操作),
即可对类内部的数据进行运算。Console...时,还是是要写参数的。*/
大家还有什么问题,欢迎在下方留言!
如果你有 技术的问题 或 项目开发
都可以加下方联系方式
和我聊一聊你的故事🧡