【问题标题】:How to make a property with a if-statement如何使用 if 语句创建属性
【发布时间】:2016-11-14 18:11:30
【问题描述】:

我的问题是,如果可能的话,做这样的事情:

public Class Test
{
  public int Number { get; set; }
  private string text;

  public string Text
  {
    if (Number > 5)
    {
      set {text = value;}
      get {return text;}
    }
  }
}

【问题讨论】:

  • 没有,但是请说明当 Number 小于或等于 5 时你想做什么?
  • 或者,在此处描述您尝试解决的问题。
  • 我希望,只有在 Number 的值高于 5 时才能访问属性文本。
  • 您可以为您的属性声明一个支持字段,然后在 get/set 访问器中编写代码以在不满足条件时引发异常。
  • 鉴于您在答案中的解释:继承如何? msdn.microsoft.com/en-us/library/ms173149.aspx

标签: c# if-statement properties


【解决方案1】:

不,但你可以这样做:

public class Test {
        public int Number { get; set; }
        private string _Text;
        public string Text {
            get {
                if(Number > 5) {
                    return _Text;
                } else {
                    //DEFAULT value here. 
                    return null;
                }                
            }
            set {
                if(Number > 5) {
                    _Text = value;
                } else {
                    //DEFAULT Value. 
                    _Text = null;
                }
            }
        }
    }

如果您使用的是 Visual Studio,我还会查看预处理器指令。根据您尝试使用代码的方式,这些可能会更有帮助。

预处理指令: https://msdn.microsoft.com/en-us/library/3sxhs2ty.aspx

【讨论】:

  • 好吧,也许有可能,以另一种方式解决我的问题。我试着为你解释一下。我有一个班级,叫Plant。此类具有以下属性:字符串类型、字符串树皮和双倍高度。如果我创建该类的新对象,则属性 bark 不应该可用,如果类型的值为 Flower。只有属性高度应该可用。
  • 如果是这样,那么@RuardvanElburg 是正确的。您需要使用继承。
猜你喜欢
  • 1970-01-01
  • 2012-11-21
  • 2019-08-28
  • 2015-04-26
  • 2022-01-18
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2019-10-03
相关资源
最近更新 更多