C# lambda 变量初始化
C# lambda variable initialization
今天第一次看到类似这样的东西:
private string m => string.Empty;
使用 lambda 来初始化变量。为什么要这样做,有什么好处?
这实际上不是变量初始化,它将 lambda 表达式 "string.Empty" 绑定到 "m",因此无论何时您取消引用 "m",它实际上都会计算您的 lambda 表达式。
如需进一步阅读,请查看 this github page(第 "Expression-bodied function member" 部分)
它不是一个变量,它是一个表达式体属性。只读 属性,在您的情况下返回 string.Empty
。
与
相同
private string m { get { return string.Empty; } }
这是 C# 6.0 中引入的新功能之一。好处是代码更短、更简洁。特别是如果你有一个 class 有很多简单的只读属性。
如果您想查看此语法的真实示例,请查看 this post on Eric Lippert's blog。如您所见,那里有很多单行方法和属性。如果没有 expression-bodied 属性和成员,代码会更长。其中相当一部分是花括号。
它被称为 Expression-Bodied Properties,它只是 getter-only 属性的快捷方式:
private string m
{
get { return string.Empty; }
}
至于这种方法的好处,我想您可以将其视为只是为您节省一些击键次数的语法糖。
今天第一次看到类似这样的东西:
private string m => string.Empty;
使用 lambda 来初始化变量。为什么要这样做,有什么好处?
这实际上不是变量初始化,它将 lambda 表达式 "string.Empty" 绑定到 "m",因此无论何时您取消引用 "m",它实际上都会计算您的 lambda 表达式。
如需进一步阅读,请查看 this github page(第 "Expression-bodied function member" 部分)
它不是一个变量,它是一个表达式体属性。只读 属性,在您的情况下返回 string.Empty
。
与
相同private string m { get { return string.Empty; } }
这是 C# 6.0 中引入的新功能之一。好处是代码更短、更简洁。特别是如果你有一个 class 有很多简单的只读属性。
如果您想查看此语法的真实示例,请查看 this post on Eric Lippert's blog。如您所见,那里有很多单行方法和属性。如果没有 expression-bodied 属性和成员,代码会更长。其中相当一部分是花括号。
它被称为 Expression-Bodied Properties,它只是 getter-only 属性的快捷方式:
private string m
{
get { return string.Empty; }
}
至于这种方法的好处,我想您可以将其视为只是为您节省一些击键次数的语法糖。