我不清楚C#中=>运算符的工作方式,不胜感激。
我已经看到它在获取并设置之后使用了。
有人可以告诉我,我可以在代码中使用该运算符吗?
gsub("\\t", ";",readLines(paste(PathToRecipes,recipe.files[i],sep="/")))
答案 0 :(得分:3)
public string Param
{
get => (string) GetValue(ParamProperty);
set => SetValue(ParamProperty, value);
}
这是C#7语法。
答案 1 :(得分:3)
基本上是表情强壮的成员只是完成常规任务的捷径。它们“可以”使您的代码看起来更简洁,并保存可打印字符。但是,除了表示它们的语法糖以外,它们没有什么特别的。
您可以在此处详细了解它们。另外,我总结并浓缩了信息,并加入了一些胡椒粉和盐调味
Expression-bodied members (C# programming guide)
表达主体定义使您可以提供成员的实现 以非常简洁易读的形式。您可以使用表情主体 任何支持的成员的逻辑(例如 方法或属性,由一个表达式组成。
方法
表示表达式的方法由单个表达式组成,该表达式 返回其类型与方法的返回类型匹配的值,或者 返回void的方法,该方法执行一些操作。
public void DisplayName() => Console.WriteLine(ToString());
// equivalent
public void DisplayName()
{
Console.WriteLine(ToString())
}
构造函数
构造函数的表达式主体定义通常包括 单个赋值表达式或处理方法的方法调用 构造函数的参数或初始化实例状态。
public class Location
{
private string locationName;
public Location(string name) => Name = name;
// equivalent
public Location(string name)
{
Name = name;
}
最终定稿器
终结器的表达式主体定义通常包含 清除语句,例如释放非托管语句 资源
public class Destroyer
{
public override string ToString() => GetType().Name;
~Destroyer() => Console.WriteLine($"The {ToString()} destructor is executing.");
// equivalent
~Destroyer()
{
Console.WriteLine($"The {ToString()} destructor is executing.");
}
}
属性获取和设置语句
如果您选择自己实现一个属性get访问器,则可以 将表达式主体定义用于简单的单个表达式 设置或返回属性值。
public string Name
{
get => locationName;
set => locationName = value;
}
// equivalent
public string Name
{
get
{
return locationName;
}
set
{
locationName = value;
}
}
只读属性
PropertyName => returnValue;
// equivalent
public string Name
{
get
{
return someValue;
}
}
索引器
像属性一样,索引器的get和set访问器包括 表达式主体定义(如果get访问器包含单个) 返回值或set访问器的语句执行简单 分配。
public string this[int i]
{
get => types[i];
set => types[i] = value;
}
// equivalent
public string this[int i]
{
get
{
return types[i];
}
set
{
types[i] = value;
}
}
也不要与Auto-Implemented initialized Properties
混淆C#自动实现的初始化属性
public string Name { get; set; } = "Joe";
基本上就像在构造函数中设置属性