Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么可以';在执行运算符重载时,我是否在类内使用print函数?_C# - Fatal编程技术网

C# 为什么可以';在执行运算符重载时,我是否在类内使用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

我没有收到任何错误。我只是想知道。为什么我键入“no4.Print();”时它不起作用。类是否已创建

我在学习运算符重载。我注意到它只在我使用Console.WriteLine func时起作用。如果我试图在类中使用Print函数,它会出错

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
,而且这种类型没有打印方法,而将一个数字赋值给一个整数只会因为自动取消装箱而起作用,而将一个整数赋值给一个数字则是自动装箱,没错。谢谢