【问题标题】:how should i set and get properties values?我应该如何设置和获取属性值?
【发布时间】:2022-03-04 07:07:02
【问题描述】:

我想问你,我应该如何设置和获取属性值?我应该这样做吗,例如直接从另一个类并将属性设置为公共属性,或者更好的做法是将属性设置为私有并更改它或通过使用此类中实现的公共函数来获取它?

第一种情况:

//Class.cs
public class Class
    {
        public int Number{ get; set; }
    }
//AnotherClass.cs
public class AnotherClass
    {
        Class class = new Class();
        class.Number = 2;
        int number = class.Number;
    }

第二种情况:

//Class.cs
public class Class
    {
        private int Number{ get; set; }

        public void setNumber(int number)
        {
           Number =  number;
        }
        public int getNumber()
        {
           return Number;
        }
    }
//AnotherClass.cs
public class AnotherClass
    {
        Class class = new Class();
        class.setNumber(2);
        int number = class.getNumber();
    }

这段代码显然有点简化了……

【问题讨论】:

  • 与许多事情一样,视情况而定
  • 但是出于同样的目的,有没有更好或更安全的选择?可以像第一种情况那样做吗?
  • 绝对是第一种情况。这就是属性的用途。
  • 感谢您的回答,现在我明白了,我应该在扩展的 setter / getter 中实现该行为,而不是创建新的方法。

标签: c# properties


【解决方案1】:

我会这样做:

//Class.cs
public class Class
{
    public int Number { get; set; }
}

//AnotherClass.cs
public class AnotherClass
{
    Class class = new Class
    {
        Number = 2    // use , (comma) to separate if needed when
                      // the class has other fields
    };
    int number = class.Number;
}

【讨论】:

  • 好的,请回答,但为什么这是一个不错的选择?
  • 我在您的问题中看到了您的评论,所以是的,根据需要自定义设置器/获取器。使用 accolades { } 的原因有很多,就像我在 AnotherClass 中展示的那样:首先,它具有 Visual Studio 自动完成功能,可以让您非常快速地编写代码。要看到这一点,您当然需要在课堂上拥有更多的 1 个字段。一旦你使用了该字段,自动完成就不会再次提示它,非常方便。当您使用 XML 或 JSON 等嵌入式类时,为了更清楚起见,您还应该使用它,而不是您的第二类案例。
  • 好的,我明白了,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 2014-06-22
  • 1970-01-01
相关资源
最近更新 更多