Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 使用泛型方法进行类型推断 这是密码 类程序 { 公共静态布尔值大于(tx,ty),其中T:i可比较 { 返回值(x.y)>0; } 静态void Main(字符串[]参数) { var结果=大于(20,10); 控制台写入线(结果); } }_C# 4.0 - Fatal编程技术网

C# 4.0 使用泛型方法进行类型推断 这是密码 类程序 { 公共静态布尔值大于(tx,ty),其中T:i可比较 { 返回值(x.y)>0; } 静态void Main(字符串[]参数) { var结果=大于(20,10); 控制台写入线(结果); } }

C# 4.0 使用泛型方法进行类型推断 这是密码 类程序 { 公共静态布尔值大于(tx,ty),其中T:i可比较 { 返回值(x.y)>0; } 静态void Main(字符串[]参数) { var结果=大于(20,10); 控制台写入线(结果); } },c#-4.0,C# 4.0,只要看看调用像isgreetherthan(20,10)这样的通用方法然后类型INT未传递。。。那么它是如何工作的呢?他们应该像大于(20,10) 如果方法签名类似于公共静态bool大于(tx,ty),其中T:IComparable,那么如果我们调用方法而不指定类型类似于IsGreaterThan(20,10),它是否有效;这边谢谢您可以省略类型参数,编译器将推断出它 类型推断的规则同样适用于静态方法和实例方法。编译器能够根据您传入的方法参数推断类型参数;它不能仅从约束或返回值推断类型参数。因此

只要看看调用像
isgreetherthan(20,10)这样的通用方法然后类型INT未传递。。。那么它是如何工作的呢?他们应该像
大于(20,10)


如果方法签名类似于
公共静态bool大于(tx,ty),其中T:IComparable
,那么如果我们调用方法而不指定类型类似于IsGreaterThan(20,10),它是否有效;这边谢谢

您可以省略类型参数,编译器将推断出它

类型推断的规则同样适用于静态方法和实例方法。编译器能够根据您传入的方法参数推断类型参数;它不能仅从约束或返回值推断类型参数。因此,类型推断不适用于没有参数的方法。类型推断发生在编译器尝试解析任何重载方法签名之前的编译时。编译器将类型推断逻辑应用于共享相同名称的所有泛型方法。在重载解析步骤中,编译器只包括那些类型推断成功的泛型方法


您应该像这样声明方法

公共静态bool大于(tx,ty),其中T:i可比较{return(x.CompareTo(y)>0);
}

否则,您将得到编译错误“非泛型声明上不允许约束”

要调用该方法,可以传递类型

    var result = IsGreaterThan<int>(20, 10);
    Console.WriteLine(result);
var结果=大于(20,10);
控制台写入线(结果);
但是,如果参数的类型相同,则可以在调用时忽略int类型。编译器负责Jon解释的类型解析器

    var result = IsGreaterThan<int>(20, 10);
    Console.WriteLine(result);