泛型方法的调用是模棱两可的错误

伊万诺夫

我有这样的结构:

public readonly struct SomeStruct<T1, T2>
{
   private readonly object _ref;

   public SomeStruct(T1 value)
   {
     _ref = value;
   }

   public SomeStruct(T2 value)
   {
     _ref = value;
   }

   public SomeStruct<U1, T2> Select<U1>(Func<T1, U1> mapLeft){ // logic... }

   public SomeStruct<T1, U2> Select<U2>(Func<T2, U2> mapRight) { // logic... }
}

我尝试使用这样的方法:

SomeStruct<int, string> someStruct = new SomeStruct<int, string>("test");

SomeStruct<bool, string> newStruct = someStruct.Select<bool>(x => true);

要么

SomeStruct<int, string> someStruct = new SomeStruct<int, string>(111);

SomeStruct<int, bool> newStruct = someStruct.Select<bool>(x => true);

但是我遇到了错误:错误下列方法或属性之间的调用不明确:'SomeStruct.Select(Func)'和'SomeStruct.Select(Func)'

qwermike

您需要明确指定类型,因为编译器无法推断lambda表达式的输入类型。例如,

SomeStruct<int, string> someStruct = new SomeStruct<int, string>(111);

SomeStruct<int, bool> newStruct = someStruct.Select<bool>((int x) => true);

为什么会这样呢?

你打电话someStruct.Select<bool>(x => true)someStruct的类型是SomeStruct<int, string>因此,如果Select<bool>您具有以下方法,则someStruct

public SomeStruct<bool, string> Select<bool>(Func<int, bool> mapLeft) {}
public SomeStruct<int, bool> Select<bool>(Func<string, bool> mapRight) {}

因此,您的lambda表达式x => true可以推断为Func<int, bool>Func<string, bool>因此,您需要为输入参数指定intstring,以避免产生歧义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用是模棱两可的-相同签名,单个方法

来自分类Dev

错误:对重载函数的模棱两可的调用

来自分类Dev

对继承的模板方法的模棱两可的调用

来自分类Dev

xpath [last()]方法中的模棱两可的错误

来自分类Dev

该方法对于错误类型是模棱两可的

来自分类Dev

模棱两可的方法编译错误

来自分类Dev

对成员函数set_value的错误调用是模棱两可的(在使用pugixml库的xcode中)

来自分类Dev

Extensiong模棱两可的错误

来自分类Dev

Extensiong模棱两可的错误

来自分类Dev

通用方法,获得模棱两可的调用错误

来自分类Dev

为什么编译器会给出模棱两可的方法调用错误?

来自分类Dev

编译时错误:调用重载方法时模棱两可。为什么?

来自分类Dev

编译时错误:调用重载方法时模棱两可。为什么?

来自分类Dev

在将重载与类型提升配合使用时,为什么方法调用是模棱两可的?

来自分类Dev

模棱两可的varargs方法

来自分类Dev

连接的引用是模棱两可的QQuickItem QMainWindow

来自分类Dev

使用memset函数时对数组的引用是模棱两可的错误

来自分类Dev

重载采用通用类型的方法会导致模棱两可的方法调用编译错误

来自分类Dev

C ++继承错误:模棱两可的错误

来自分类Dev

MySQL错误:1064模棱两可的错误

来自分类Dev

模棱两可的调用IQueryable或IEnumerable

来自分类Dev

对context.Object.Include的模棱两可的调用

来自分类Dev

错误C2668:'boost :: bind':对重载函数的模棱两可的调用

来自分类Dev

为什么传递值和传递右值重载c ++函数调用是模棱两可的?

来自分类Dev

OpenTransactions / Protobuf模棱两可的错误

来自分类Dev

错误:“运算符==”的模棱两可的重载

来自分类Dev

mysql查询模棱两可的错误

来自分类Dev

C ++ const mysqlpp :: String模棱两可的错误

来自分类Dev

引用println是模棱两可的错误

Related 相关文章

  1. 1

    调用是模棱两可的-相同签名,单个方法

  2. 2

    错误:对重载函数的模棱两可的调用

  3. 3

    对继承的模板方法的模棱两可的调用

  4. 4

    xpath [last()]方法中的模棱两可的错误

  5. 5

    该方法对于错误类型是模棱两可的

  6. 6

    模棱两可的方法编译错误

  7. 7

    对成员函数set_value的错误调用是模棱两可的(在使用pugixml库的xcode中)

  8. 8

    Extensiong模棱两可的错误

  9. 9

    Extensiong模棱两可的错误

  10. 10

    通用方法,获得模棱两可的调用错误

  11. 11

    为什么编译器会给出模棱两可的方法调用错误?

  12. 12

    编译时错误:调用重载方法时模棱两可。为什么?

  13. 13

    编译时错误:调用重载方法时模棱两可。为什么?

  14. 14

    在将重载与类型提升配合使用时,为什么方法调用是模棱两可的?

  15. 15

    模棱两可的varargs方法

  16. 16

    连接的引用是模棱两可的QQuickItem QMainWindow

  17. 17

    使用memset函数时对数组的引用是模棱两可的错误

  18. 18

    重载采用通用类型的方法会导致模棱两可的方法调用编译错误

  19. 19

    C ++继承错误:模棱两可的错误

  20. 20

    MySQL错误:1064模棱两可的错误

  21. 21

    模棱两可的调用IQueryable或IEnumerable

  22. 22

    对context.Object.Include的模棱两可的调用

  23. 23

    错误C2668:'boost :: bind':对重载函数的模棱两可的调用

  24. 24

    为什么传递值和传递右值重载c ++函数调用是模棱两可的?

  25. 25

    OpenTransactions / Protobuf模棱两可的错误

  26. 26

    错误:“运算符==”的模棱两可的重载

  27. 27

    mysql查询模棱两可的错误

  28. 28

    C ++ const mysqlpp :: String模棱两可的错误

  29. 29

    引用println是模棱两可的错误

热门标签

归档