c# - 方法参数内的变量赋值

标签 c#

我刚刚发现(通过发现一个错误)你可以这样做:

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/

相关文章:

c# - 从 Microsoft.Azure.DocumentDb 迁移到 Microsoft.Azure.Cosmos 以进行数据访问。并非所有选项都可用

c# - 编写此 if 语句的更好方法?

C# WinForms 尝试使用 Timer 更新 UI 但不会降低性能

C# LINQ 使用值列表按子列表过滤复杂对象列表

C# 从文本框中获取字符串

c# - 使用 shell 命令从 C# 程序中下载 MySQL 表是否合适?

c# - 如何在服务器端处理新的刷新 token ?

c# - 选择 WPF 随机画笔颜色

c# - 为什么在重定向输出时调整控制台缓冲区会引发无效句柄异常?

c# - 无法在 VS 2017 U1 (15.3) 中打开的项目上加载类型 'Microsoft.Build.Framework.SdkReference'