gpt4 book ai didi

c# - 为什么重载方法在 ref only CLS compliant 方面有所不同

转载 作者:太空狗 更新时间:2023-10-29 20:37:07 27 4
gpt4 key购买 nike

公共(public)语言规范对方法重载非常严格。

Methods are allowed to be overloaded only based on the number and types of their parameters, and in the case of generic methods, the number of their generic parameters.

根据 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 (或 out T ,它使用相同类型的不同语义)正在声明对 T 的“引用”引用(对于类)或实例(对于值类型)。

有关更多详细信息,请查找 Type.MakeByRefType() 方法 - 它创建表示对原始类型的引用的类型,例如对于 T这将返回一个 T& (用 C++ 表示法)。

关于c# - 为什么重载方法在 ref only CLS compliant 方面有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com