在C#中传递属性作为“out”参数
假设我有:
public class Bob { public int Value { get; set; } }
我想通过Value成员作为输出参数
Int32.TryParse("123", out bob.Value);
但是我得到一个编译错误, “out”参数没有被分类为variables。 有没有办法做到这一点,或者我将不得不提取一个variables,拉:
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; } } }
然后,您可以将该字段作为输出parameter passing:
Int32.TryParse("123", out bob.value);
但是,当然,这只会在同一个class级内工作,因为这个领域是私人的(应该是!)。
属性只是不让你这样做。 即使在VB中,您可以通过引用来传递属性,或者将它用作out参数,但基本上还有一个额外的临时variables。
如果你不关心TryParse
的返回值,你可以随时编写自己的帮助器方法:
static int ParseOrDefault(string text) { int tmp; int.TryParse(text, out tmp); return tmp; }
然后使用:
bob.Value = Int32Helper.ParseOrDefault("123");
这样,即使您需要在多个位置执行此操作,也可以使用单个临时variables。
你可以做到这一点,但不能与财产。
public class Bob { public int Value { get; set; } // This is a property public int AnotherValue; // This is a field }
你不能Value
,但你可以在AnotherValue
。
这将工作
Int32.TryParse("123", out bob.AnotherValue);
但是,通用的指导方针告诉你不要公开课堂。 所以你应该使用临时variables的方法。