公共语言规范对方法重载非常严格。
仅允许根据其参数的数量和类型来重载方法,如果是泛型方法,则根据其泛型参数的数量进行重载。
根据 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 ()
{
}
}
这是符合 CLS 的,因为类型不同。超载规则要求满足一个(或多个)标准,而不是同时满足所有标准。
A ref T
(or out T
,它使用相同的相同类型不同的语义)正在声明对 a 的“引用”T
引用(对于类)或实例(对于值类型)。
欲了解更多详细信息,请查找Type.MakeByRefType() http://msdn.microsoft.com/en-us/library/system.type.makebyreftype.aspx方法 - 它创建表示对原始类型的引用的类型,例如为一个T
这会返回一个T&
(以 C++ 表示法)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)