加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 解析器前端的泛型和挑战

发布时间:2020-12-15 04:19:36 所属栏目:百科 来源:网络整理
导读:如果你有: F(GA,B(4)); 这是否意味着用户想要通过比较G和A产生的2个参数来调用方法F,而B和常数4? 或者是否表示调用F,使用类型参数A和B调用通用方法G,参数为4? 解决方法 所以我试过了,只是为了确定.事实证明这个工作很好: void F(int x) { }int GT,U(int
如果你有:
F(G<A,B>(4));

这是否意味着用户想要通过比较G和A产生的2个参数来调用方法F,而B和常数4?

或者是否表示调用F,使用类型参数A和B调用通用方法G,参数为4?

解决方法

所以我试过了,只是为了确定.事实证明这个工作很好:
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 (4))或F(G> A,B>(4)),仅举几个例子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读