gpt4 book ai didi

c# - 为什么下面的代码输出 System.Int32 而不是 System.String?

转载 作者:行者123 更新时间:2023-12-03 17:32:31 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Puzzle from an Interview with Eric Lippert: Inheritance and Generic Type Setting

(5 个回答)


去年关闭。




为什么下面的代码输出System.Int32而不是 System.String ?

public class A<T>
{
public class B : A<int>
{
public void M() { System.Console.WriteLine(typeof(T)); }
public class C : B { }
}
}

public class P
{
public static void Main() { (new A<string>.B.C()).M(); }
}
我得到了这个代码表: https://www.dotnetcurry.com/csharp/1292/eric-lippert-interview

最佳答案

为什么此代码返回 System.Int32删除时 .C()让它返回 System.String有点没有意义。
然而,有一个解释。即使 public class C : B { }并没有真正做任何事情,它仍然说“嘿,因为我们从 B 继承,那么我们一定给了一个 int!”。
如果我们删除 .C()然后我们从 A 继承,它基本上接受任何类型的参数,在我们的情况下,是一个字符串。
因此,我会说,因为我们一直“进入”C,所以我们确保告诉我们的编译器我们正在使用一个 int,因此我们从运行这段代码中得到了结果!

关于c# - 为什么下面的代码输出 System.Int32 而不是 System.String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62502188/

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