gpt4 book ai didi

C# 泛型和约束

转载 作者:行者123 更新时间:2023-11-30 18:50:39 26 4
gpt4 key购买 nike

如果我有一个通用约束,其中 C 必须是一个结构:

class MyNum<C> where C : struct
{
C a;
public MyNum(C a)
{
this.a = a;
}
}

struct myStruct
{
public int a;
}

我明白这个编译:

    myStruct n = new myStruct();
n.a = 5;
MyNum<myStruct> str = new MyNum<myStruct>(n);

但是为什么会这样编译。 ¿数字 5 是结构吗?

我想通过这样做:

int b = 5;

b 将是 int 类型,但不是 struct 类型。我想我在这里遗漏了什么。

也只是为了使用正确的术语:

int b = 5; 

我在实例化 b 吗?创建一个 int 实例?出于某种原因,当我想到“实例”时,我会想到引用类型。

这里:

Car c1 = new Car(); 

在这里我明白我正在创建一个 Car 实例或实例化 c1。

最佳答案

intstruct .

查看 MSDN 上的 Int32 定义


编辑:

正在做:

 int i = 5;

还有:

MyStruct m = new MyStruct();

您正在创建一个与包含该结构的必要空间一样大的内存位置。
与引用类型的不同之处在于,变量 mi 不是对那些存储值的内存位置的引用,但它们基本上是 “值本身” .

事实上当你这样做时:

MyStruct m1 = new MyStruct();
MyStruct m2 = m1;

m2 并不表示与 m1 相同的内存位置,但是 m1 的内容被复制到表示的内存的新位置通过变量 m2

关于C# 泛型和约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028254/

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