公共语言规范对方法重载非常严格.
允许方法仅基于其参数的数量和类型来重载,并且在通用方法的情况下,允许方法的通用参数的数量.
根据csc,为什么此代码符合CLS(没有CS3006警告)?
using System;
[assembly: CLSCompliant (true)]
public class Test {
public static void Expect<T>(T arg)
{
}
public static void Expect<T>(ref T arg)
{
}
public static void Main ()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这是符合 CLS 的,因为类型不同。超载规则要求满足一个(或多个)标准,而不是同时满足所有标准。
A ref T(或out T,使用相同类型的不同语义)正在声明对引用T(对于类)或实例(对于值类型)的“引用”。
有关更多详细信息,请查找该Type.MakeByRefType()方法 - 它创建表示对原始类型的引用的类型,例如,对于 a Tthis 返回 a T&(以 C++ 表示法)。
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |