163585580 发表于 2023-1-18 10:20

c#继承接口后的get=>和set=>表示什么含义?

如图所示,我实现接口后重写这个方法,请问这个get=>Name是什么意思啊?还有set为什么后面还有个value啊?

wkfy 发表于 2023-1-18 10:36

应该和属性是一样的吧。get: return(Name)   set: Name=value;

namedlxd 发表于 2023-1-18 10:40

=> 是lambda吧

limit7 发表于 2023-1-18 10:42

是属性,和 {get;set;} 一样
get=>name就是说外面调用get方法时,返回给外面name。
=>是lambda表达式,等同于
pulic string get()
{
return Name;
}
value就是指调用set方法时,传过来的值
public string set(string value)
{
Name=value
}

老湿机 发表于 2023-1-18 10:59

根据我编程多年浅显的经验,这个属于语法糖规范。
默认情况下都这么写,当然可以自己重新封装,
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);

易桶浆糊 发表于 2023-1-18 12:05

没有set 就是只读,有就是可读可写

零下八度 发表于 2023-1-18 15:11

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#版本的新语法 ,你可以去看看。


4899 发表于 2023-1-18 15:26

就是字面意思,get返回nameset 设置name

RURUKnight 发表于 2023-1-18 16:07

主要原因是很多书还是低版本的C#导致的……

jackrebel 发表于 2023-2-8 15:06

页: [1]
查看完整版本: c#继承接口后的get=>和set=>表示什么含义?