【问题标题】:What is the Use of Property {get, set} method in C # 3.0 [duplicate]C#3.0中属性{get,set}方法的用途是什么[重复]
【发布时间】:2011-04-14 08:24:52
【问题描述】:

可能重复:
C# Automatic Properties

你好,
我最近从 Java 转向 .net (c#) 平台。在这里我还没有遇到太多问题......反正我搞砸了

 property{get, set}
方法。实际上,根据我的说法,我无法获得这些(属性)的确切含义,可以使用方法来完成初始化变量或对象的字段或状态的相同工作。我们可以将字段声明为私有,并可以使用同一类的公共方法访问它们。

          嗯,一件简单的事情,我不是程序员或员工,而是计算机科学的普通学生,旨在成为一名全职程序员。

- 非常感谢大家提前帮助我。

property{get, set}

【问题讨论】:

  • 这也是一个关于如何使用属性的好链接......stackoverflow.com/questions/40730/…
  • 谢谢大家让我的问题更清楚,但似乎,除了herzmeister der welten,大多数人仍然无法理解这一点。
  • 实际上我的问题是为什么我们应该使用属性或自动属性,尽管有构造函数和其他方式来初始化对象的状态。希望这个评论能明确我的意图,更好。 -谢谢

标签: c# methods get properties set


【解决方案1】:

C# 属性类似于 Java 中的 getter 和 setter 函数。
事实上 - 它们正在被编译为 MSIL 方法。

【讨论】:

    【解决方案2】:

    属性的获取部分是您检索属性值的部分。

    属性的设置部分是您可以为属性赋值的部分。

    这里有一个教程: http://www.csharp-station.com/Tutorials/Lesson10.aspx

    【讨论】:

      【解决方案3】:

      以下代码sn-p-

      private string name;
      public string Name
      {
      get { return name; }
      set { name = value; }
      }
      

      相当于Java中的getter和setter:

      private String name;
      public String getName() { return name; }
      public void setName(String newName) { name = newName; }
      

      在 C# 3.0 及以后的版本中,您只需使用以下行即可获得相同的效果:

      public string Name { get; set; }
      

      这被称为自动属性,编译器会为此属性生成一个支持私有字段和 getter/setter。希望这会有所帮助。

      【讨论】:

      • 我正在搜索这个 C# 3.0 版本,非常感谢。
      【解决方案4】:

      使用属性删除了为私有成员设置值和获取它们的值的方法调用。喜欢:

      private int number = 0;
      public int Number { get{ return number;} set{number = value;}}
      

      现在你要做的就是创建一个对象,而不是调用函数/方法来访问数字,你可以这样做:

      ObjectCreated.Number = 100;
      Console.WriteLine(ObjectCreated.Number);
      

      隐式地,Number 将设置 number = 100,并且下一行将获取 100 的数字。

      【讨论】:

        【解决方案5】:

        为了封装的目的,对象的字段必须对其他字段隐藏,有时对象想要将一些数据传递出去,这些数据可以是字段数据经过一些更改,也可以是多个字段数据的结果,对象可以这样做按属性。

        【讨论】:

          【解决方案6】:

          为了补充其他答案,我认为问题更多是关于 whenwhy 使用属性而不是方法。

          属性向调用者传达一个值或多或少是即时可用的。当调用者必须执行myObject.CustomerList 时,他期望列表已经被加载并被其类缓存在一个字段中。他希望在对列表进行进一步操作时,不需要将列表存储在局部变量中。

          当他必须做myObject.GetCustomerList() 时,他预计这将需要一段时间,因为该列表将从某个地方检索,并且他可能会在每次调用时获得该列表的另一个实例,并且他因此应该将列表存储在局部变量中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-11
            • 2011-10-03
            • 2010-11-23
            相关资源
            最近更新 更多