当前位置: 首页 > 编程语言 > C#

即使签名匹配,也无法将一种类型的委托分配给另一种类型分享

时间:2023-04-10 16:10:37 C#

C#学习教程:即使签名匹配share也不能将一种类型的委托分配给另一种类型intBinaryOperation(inta,intb);//...在方法体中FuncaddThem=(x,y)=>x+y;BinaryOperationb1=addThem;//不编译,转换也不编译BinaryOperationb2=(x,y)=>x+y;//编译!C#对“struct”类型的支持非常有限。特别是,您不能仅仅因为它们的声明相似就从一种委托类型强制转换为另一种委托类型。来自语言规范:C#中的委托类型是名称等效的,而不是结构上等效的。具体来说,具有相同参数列表和返回类型的两个不同的委托类型被认为是不同的委托类型。尝试以下方法之一://C#2,3,4(C#1由于泛型而没有出现)BinaryOperationb1=newBinaryOperation(addThem);//C#3,4BinaryOperationb1=(x,y)=>addThem(x,y);varb1=newBinaryOperation(addThem);这是一个类似的问题:为什么不编译?//在某处声明structFoo{publicintx;公共整数y;}structBar{publicintx;公共整数y;}//...在方法体中Fooitem=newFoo{x=1,y=2};酒吧b1=项目;//不编译,转换不编译Barb2=newBar{x=1,y=2};//编译!在这种情况下,演员阵容看起来并不那么自然,但出于同样的原因。以上是C#学习教程:即使签名匹配,也不可能将一种类型的委托分配给另一种类型的共享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: