获取变量地址时使用未分配的局部变量
Use of unassigned local variable when taking the address of variable
为什么在此代码中,编译器在获取该变量的地址时不显示错误 Use of unassigned local variable
?
int i;
int* p = &i; // Use of unassigned local variable i ?
int j = *p; // j = 0
j = i; // both valid
这将编译正常并且 j
的值将为 0。
当你在 C# 中处理 unsafe
代码时,你基本上是在告诉编译器,不要警告我,我知道了。所以编译器只会按照你告诉它的去做。
该代码完全有效,因为您没有使用未分配的变量,而是使用了它的指针。
最后一行是有效的,因为它不是使用未分配的变量而是取消引用指针。
这就是为什么在您切换到不安全模式之前 c# 是托管语言的原因。
'j'的零可能是debug模式造成的
为什么在此代码中,编译器在获取该变量的地址时不显示错误 Use of unassigned local variable
?
int i;
int* p = &i; // Use of unassigned local variable i ?
int j = *p; // j = 0
j = i; // both valid
这将编译正常并且 j
的值将为 0。
当你在 C# 中处理 unsafe
代码时,你基本上是在告诉编译器,不要警告我,我知道了。所以编译器只会按照你告诉它的去做。
该代码完全有效,因为您没有使用未分配的变量,而是使用了它的指针。
最后一行是有效的,因为它不是使用未分配的变量而是取消引用指针。
这就是为什么在您切换到不安全模式之前 c# 是托管语言的原因。
'j'的零可能是debug模式造成的