C#隐式类型推断(方法)

示例

将形式参数传递给泛型方法时,通常可以隐式推断相关的泛型类型参数。如果可以推断所有通用类型,则在语法中指定它们是可选的。

考虑以下通用方法。它具有一个形式参数和一个通用类型参数。它们之间有一个非常明显的关系-作为参数传递给泛型类型参数的类型必须与传递给形式参数的参数的编译时类型相同。

void M<T>(T obj)

{

}

这两个调用是等效的:

M<object>(new object());

M(new object());

这两个调用也等效:

M<string>("");

M("");

这三个调用也是如此:

M<object>("");

M((object) "");

M("" as object);


请注意,如果无法推断出至少一个类型参数,则必须全部指定它们。

考虑以下通用方法。第一个泛型类型参数与形式参数的类型相同。但是第二个泛型类型参数没有这种关系。因此,编译器无法在对该方法的任何调用中推断第二个泛型类型参数。

void X<T1, T2>(T1 obj)

{

}

这不再起作用了:

X("");

这也不起作用,因为编译器不确定我们是指定第一个通用参数还是第二个通用参数(两者都将有效为object):

X<object>("");

我们需要同时输入两者,如下所示:

X<string, object>("");

           

以上是 C#隐式类型推断(方法) 的全部内容, 来源链接: utcz.com/z/343148.html

回到顶部