gpt4 book ai didi

c# - 在 C# 中将属性作为 'out' 参数传递

转载 作者:IT王子 更新时间:2023-10-29 03:40:50 33 4
gpt4 key购买 nike

假设我有:

public class Bob
{
public int Value { get; set; }
}

我想将 Value 成员作为输出参数传递,例如

Int32.TryParse("123", out bob.Value);

但是我得到一个编译错误,“‘out’参数没有被归类为一个变量。”有没有办法实现这个,或者我是否必须提取一个变量,à啦:

int value;
Int32.TryParse("123", out value);
bob.Value = value;

最佳答案

您必须显式使用字段和“普通”属性而不是自动实现的属性:

public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}

然后您可以将字段作为输出参数传递:

Int32.TryParse("123", out bob.value);

当然,这只会在同一个类中起作用,因为该字段是私有(private)的(而且应该是!)。

属性不允许您这样做。即使在您可以通过引用传递属性或将其用作输出参数的 VB 中,基本上也有一个额外的临时变量。

如果您不关心 TryParse 的返回值,您总是可以编写自己的辅助方法:

static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}

然后使用:

bob.Value = Int32Helper.ParseOrDefault("123");

这样即使您需要在多个地方执行此操作,您也可以使用单个临时变量。

关于c# - 在 C# 中将属性作为 'out' 参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1370238/

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