gpt4 book ai didi

c# - 如何使用界面和类型转换目的?

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:54 26 4
gpt4 key购买 nike

我在这两种情况下都使用了界面。这是我的第一个案例使用界面吗??这是我的界面和类

interface IAddition {
int Add();
}

interface IMultiplication {
int Multiplication();
}

这是我的类(class)

public class Calculation : IAddition, IMultiplication {
int x, y;
public Calculation(int x, int y) {
this.x = x;
this.y = y;
}

public int Add() {
return (x + y);
}
public int Multiplication() {
return (x * y);
}
}

第一种情况是这样

class Program {
static void Main(string[] args) {
Calculation cal = new Calculation(20, 30);
Console.WriteLine("Sum is= " + cal.Add());
Console.WriteLine("Multiplication is= " + cal.Multiplication());
Console.ReadKey();
}
}

第二种情况是这样

class Program {
static void Main(string[] args) {
Calculation cal = new Calculation(20, 30);
IAddition add = (IAddition)cal;
IMultiplication mul = (IMultiplication)cal;
Console.WriteLine("Sum is= " + add.Add());
Console.WriteLine("Multiplication is= " + mul.Multiplication());
Console.ReadKey();
}
}

这两行的目的是什么???这里类型转换的目的是什么??尽管第一种情况具有相同的输出

IAddition add = (IAddition)cal;
IMultiplication mul = (IMultiplication)cal;

最佳答案

只有第二种情况程序到IAdditionIMultiplication 接口(interface)。即使 Calculation 类没有实现 IAdditionIMultiplication,第一种情况也能正常工作。

what is the purpose of casting?

请注意,由于您使用显式接口(interface)类型声明变量,因此您可以安全地在 muladd 的声明中删除强制转换:

IAddition add = cal;
IMultiplication mul = cal;

你也可以用隐式类型声明重写你的声明:

var add = (IAddition)cal;
var mul = (IMultiplication)cal;

What is the purpose of these 2 lines?

这些行使用Calculation 实现的接口(interface)类型声明了两个变量。在此示例中,它们没有实际区别,但通常您可以使用 addmul 来具体说明您编程的抽象级别。例如,IAddition add 告诉您的程序的读者您不需要使用 cal 的任何方面,除了与加法相关的那些。

关于c# - 如何使用界面和类型转换目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com