gpt4 book ai didi

c# - 如何在函数中实例化空引用参数?

转载 作者:行者123 更新时间:2023-12-03 21:57:12 27 4
gpt4 key购买 nike

class A
{
public int B { get; set; }
public int C { get; set; }
}

private static void function(A a)
{
if (a == null) a = new A();
a.B = 2;
a.C = 3;
}

A a = new A(); //a is not null
a = null; // a is null
function(a);
//a is still null

如果我使用 C++ 类比,我的理解是,虽然“a”是一个指向“A”类型的对象的指针,该对象由函数通过引用访问,但指针本身被用作值类型。最终结果是变量“a”仍然为空。

所以我的问题是,如果我想实例化变量,就像指针通过引用传递给函数一样,该怎么办?这可行吗?

最佳答案

可以使用refout,但请不要!让 void 方法通过参数返回值是一种定义代码味道。这些关键字应该被视为与 goto 相当(即语言支持它们,并且在一些边缘情况下可以使用它们,但它们应该是最后的工具)。相反,让您的函数返回值:

private static A function(A a)
{
if (a == null) a = new A();
a.B = 2;
a.C = 3;
return a;
}

A a = new A(); //a is not null
a = null; // a is null
a = function(a); // a is not null

关于c# - 如何在函数中实例化空引用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30802315/

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