gpt4 book ai didi

c# - 通用类可以产生相同的签名重载吗?

转载 作者:太空狗 更新时间:2023-10-30 00:03:16 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Generic methods and method overloading

好吧,我不小心撞到了这个......给这个情况:

class Program {
static void Main( string[ ] args ) {

var obj = new gen<int>( );
Console.Write( obj[ 1 ] );
Console.ReadKey( );

}
}

class gen<T> {

public int this[ T i ] { get { return 2; } }

public int this[ int i ] { get { return 1; } }

}

它总是会打印 1。我本以为编译器会提示,或者运行时会崩溃、燃烧和融化 CPU,但是没有,它很乐意打印“1”

当然,如果我为通用参数使用任何其他类型,我可以选择返回。为了咯咯笑,我尝试使用 UInt 作为通用类型参数,我可以区分调用,所以问题是:

  1. 为什么 C# 没有崩溃? Anders Hejlsberg 不应该感到原力受到干扰吗?

  2. 如何限制某些类型的泛型参数?因为在这个 T 中可以是整数以外的任何东西(但长整数也可以)

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