C# 为什么可以';在执行运算符重载时,我是否在类内使用print函数?
我没有收到任何错误。我只是想知道。为什么我键入“no4.Print();”时它不起作用。类是否已创建 我在学习运算符重载。我注意到它只在我使用Console.WriteLine func时起作用。如果我试图在类中使用Print函数,它会出错C# 为什么可以';在执行运算符重载时,我是否在类内使用print函数?,c#,C#,我没有收到任何错误。我只是想知道。为什么我键入“no4.Print();”时它不起作用。类是否已创建 我在学习运算符重载。我注意到它只在我使用Console.WriteLine func时起作用。如果我试图在类中使用Print函数,它会出错 using System; class Number{ private int myNumber; public Number(int myNumber){ this.myNumber=myNumber; } public static Numb
using System;
class Number{
private int myNumber;
public Number(int myNumber){
this.myNumber=myNumber;
}
public static Number operator *(Number a, Number b){
return new Number(a.myNumber*b.myNumber);
}
public void Print(){
Console.WriteLine(this.myNumber);
}
public static implicit operator int(Number a) {
return a.myNumber;
}
public static implicit operator Number(int a) {
return new Number(a);
}
}
class HelloWorld {
static void Main() {
Number no1 = new Number(5);
Number no2 = new Number(2);
Number no3 = no1*no2;
no3.Print();
int no4 = new Number(1312);
Console.WriteLine(no4); //It doesnt work no4.Print();
Number no5 = 2121;
no5.Print();
}
}
您不能调用
no4.Print()因为int
类型/类没有这样的方法。此外,没有人告诉变量转换为Number
对象。然而,当你写一些类似
((Number)no4).Print();
在定义的隐式运算符Number(int a)
运算符的帮助下,您正在将int
值显式转换为Number
对象。no4
是int
,而且这种类型没有打印方法,而将一个数字赋值给一个整数只会因为自动取消装箱而起作用,而将一个整数赋值给一个数字则是自动装箱,没错。谢谢