gpt4 book ai didi

c# - Parser Front 上的泛型和挑战

转载 作者:太空狗 更新时间:2023-10-29 17:43:26 25 4
gpt4 key购买 nike

如果你有:

F(G<A,B>(4));

这是否意味着用户想要调用方法 F,其参数为比较 G 和 A、B 和常量 4 的结果?

或者它是否意味着使用类型参数 A 和 B 以及参数 4 调用泛型方法 G 的结果调用 F?

最佳答案

所以我试了一下,只是为了确定。事实证明这工作得很好:

void F(int x) { }
int G<T, U>(int x) { return x; }

class A { }
class B { }

void Main()
{
F(G<A,B>(4));
}

但这会产生一些编译错误:

void F(bool x, bool y) { }

void Main()
{
int G = 0, A = 1, B = 2;
F(G<A,B>(4));
}

The type or namespace name 'A' could not be found (press F4 to add a using directive or assembly reference)

The type or namespace name 'B' could not be found (are you missing a using directive or an assembly reference?)

The variable 'G' is not a generic method. If you intended an expression list, use parentheses around the < expression.

所以答案是表达式 F(G<A,B>(4))被解释为通用函数调用。有许多方法可以强制编译器将其视为具有两个参数的单个函数调用:F(G<A,B>4) , F((G)<A,B>(4)) , 或 F(G>A,B>(4)) , 仅举几例。

关于c# - Parser Front 上的泛型和挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18071802/

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