gpt4 book ai didi

c# - 为什么这段代码要用 long 代替 float 呢?

转载 作者:行者123 更新时间:2023-12-02 02:24:08 28 4
gpt4 key购买 nike

我以这段代码为例:

class A<T> {
public class B : A<long> {
public void f() {
Console.WriteLine( typeof(T).ToString());
}

public class C : A<long>.B { }

}
}

class Prg5 { static void Main() {
var c = new A<float>.B.C();
c.f();
} }

输出:

System.Int64

为什么它会打印很长的类型?最初传递的 float 类型如何以及在哪里被替换?

最佳答案

类型C定义为:

public class C : A<long>.B { }

类型A定义为:

class A<T> {
public class B : A<long> {
public void f() {
Console.WriteLine( typeof(T).ToString());
}

public class C : A<long>.B { }
}
}

因此,如果您创建一个新的 C那么 A 的类型参数是 long .

在声明中var c = new A<float>.B.C(); , A<float>B只是嵌套类“路径”的一部分 C 。事实是A<float>是该路径的一部分并不会改变 C 的事实是 A<long>.B .

float参数和事实 BA<long>与确定 T 的类型无关里面c.f() .

关于c# - 为什么这段代码要用 long 代替 float 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65952881/

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