我刚刚发现(通过发现一个错误)你可以这样做:
string s = "3";
int i;
int.TryParse(s = "hello", out i); //returns false
使用赋值的返回值是否合法?
(显然 i++
是,但这一样吗?)
最佳答案
通常我会避免使用赋值的返回值,因为它很容易导致不得不发现错误。然而,该功能有一个很好的用途,如下所示,延迟初始化:
class SomeClass
{
private string _value;
public string Value { get { return _value ?? (_value = "hello"); } }
}
从 C# 6 开始,这可以使用 =>
符号表示:
class SomeClass
{
private string _value;
public string Value => _value ?? (_value = "hello");
}
通过使用 ??符号和赋值的返回值,简洁但可读的语法可用于仅初始化字段并在调用该属性时通过属性返回它。在上面的例子中,这不是很有用,但是在需要进行单元测试的外观中,只初始化那些被测试的部分可以大大简化代码。
关于c# - 方法参数内的变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18978689/