rau*_*and 2 .net c# generics struct constraints
如果我有一个通用约束,其中C必须是一个结构:
class MyNum<C> where C : struct
{
C a;
public MyNum(C a)
{
this.a = a;
}
}
struct myStruct
{
public int a;
}
Run Code Online (Sandbox Code Playgroud)
我明白这个编译:
myStruct n = new myStruct();
n.a = 5;
MyNum<myStruct> str = new MyNum<myStruct>(n);
Run Code Online (Sandbox Code Playgroud)
但为什么这会编译.¿5号是一个结构吗?
我想这样做:
int b = 5;
Run Code Online (Sandbox Code Playgroud)
b的类型为int,但不是struct struct.我想我在这里遗漏了一些东西.
也只是使用正确的术语:
int b = 5;
Run Code Online (Sandbox Code Playgroud)
我实例化b?创建一个int实例?出于某些原因,当我想到"实例"时,我会想到引用类型.
这里:
Car c1 = new Car();
Run Code Online (Sandbox Code Playgroud)
在这里,我理解我正在创建一个Car实例或实例化c1.
dig*_*All 12
看看MSDN上的Int32定义
编辑:
这样做:
int i = 5;
Run Code Online (Sandbox Code Playgroud)
以及:
MyStruct m = new MyStruct();
Run Code Online (Sandbox Code Playgroud)
您正在创建一个与包含结构所需空间一样大的内存位置.
引用类型的区别,是变量m,并i不能对存储值的那些存储位置的引用,但他们基本上"本身的价值".
事实上你这样做:
MyStruct m1 = new MyStruct();
MyStruct m2 = m1;
Run Code Online (Sandbox Code Playgroud)
m2不代表相同的内存位置m1,但内容m1被复制在由变量表示的内存的新位置m2
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |