可以将=>运算符应用于替换get {return(string)GetValue(ParamProperty); }

时间:2018-07-30 01:56:26

标签: c#

我不清楚C#中=>运算符的工作方式,不胜感激。

我已经看到它在获取并设置之后使用了。

有人可以告诉我,我可以在代码中使用该运算符吗?

gsub("\\t", ";",readLines(paste(PathToRecipes,recipe.files[i],sep="/")))

2 个答案:

答案 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";

基本上就像在构造函数中设置属性