c#继承接口后的get=>和set=>表示什么含义?
如图所示,我实现接口后重写这个方法,请问这个get=>Name是什么意思啊?还有set为什么后面还有个value啊? 应该和属性是一样的吧。get: return(Name) set: Name=value; => 是lambda吧 是属性,和 {get;set;} 一样get=>name就是说外面调用get方法时,返回给外面name。
=>是lambda表达式,等同于
pulic string get()
{
return Name;
}
value就是指调用set方法时,传过来的值
public string set(string value)
{
Name=value
} 根据我编程多年浅显的经验,这个属于语法糖规范。
默认情况下都这么写,当然可以自己重新封装,
Get和Set内可以写更加复杂的操作,比如调用Get,将内部的属性 Md5加密,外部调用属性赋值时,内部做更加复杂的操作
public class Test
{
string fuckName;
public string FuckName { get => Md5(fuckName); set => fuckName = value; }
public string Md5(string fuckName)
{
fuckName += "大过年的";
return fuckName;
}
}
Test test = new Test();
test.FuckName = "123";
Console.WriteLine(test.FuckName); 没有set 就是只读,有就是可读可写 lambda 语法糖而已,你可以看看lambda和属性的简写相关。
主要还是为了书写方便,简化代码。概念我就不复制粘贴了,给你写个简写的转化过程:
属性的标准写法:
public class Newyear: Ultureman
{
string _name;
public string Name
{
get
{
return _name; //这里是 getter 的方法体,由于只有一行,可以进一步简写:写法2
}
set
{
_name = value;//这里是 setter 的方法体,由于只有一行,可以进一步简写:写法2
}
}
}
写法2:只有一行,进一步简写(把花括号、return 之类的去掉,节省代码):
public class Newyear: Ultureman
{
string _name;
public string Name
{
get => _name; //由于这里不对_name字段做任何改动直接返回,可以进一步简写:写法3
set => _name = value; //由于这里不对_name字段做任何改动直接返回,可以进一步简写:写法3
}
}
写法3:由于不对_name字段做任何改动直接返回,进一步简写(把_name字段都去掉,反正也不做改动):
public class Newyear: Ultureman
{
public string Name
{
get;
set;
}
}
进一步整理代码:
public class Newyear: Ultureman
{
public string Name { get;set;}
}
ps:现在的语法糖越来越多了,有很多帖子专门整理了所有C#版本的新语法 ,你可以去看看。
就是字面意思,get返回nameset 设置name 主要原因是很多书还是低版本的C#导致的……
页:
[1]