【问题标题】:C# questions regarding coding关于编码的 C# 问题
【发布时间】:2015-06-03 09:52:14
【问题描述】:

如果我有一个 Pet 类,其中包含 int、double 和 bool 的 get set 方法

这对吗?

public class Pet
{
  private string name;
  private bool age;
  public Pet(string name, bool age)
  {
     this.name = name;
     this.age = age;
  }
  public string Name
  {
    get { return name; }
    set { name = value; }
  }
  public bool Age
  {
    get { return age; }
    set { age = value; }
  }
}

主要方法

Pet myPet = new Pet ("james", true);

在 bool 的对象中放入 true 可以吗?

【问题讨论】:

  • 这是类构造函数而不是对象类
  • 不清楚你在问什么,get set方法与代码行有什么关系? “正确”是什么意思?
  • 根据编辑:是的,没错。
  • 我仍然会说它是错误的,因为 True 或 False 并不是一个年龄的真正有效表示。请阅读How to Ask

标签: c#


【解决方案1】:

没有。

为此,您必须创建一个自定义构造函数,例如:

public class Pet
{
    public string Name { get; set; }
    public float Weight { get; set; }
    public bool Alive { get; set; }

    //defining a custom constructor
    public Pet(string name, float weight, bool alive)
    {
        this.Name = name;      //assign input parameter value to the Property
        this.Weight = weight;
        this.Alive = alive;
    }
}

【讨论】:

    【解决方案2】:

    如果你的类有 int、double 和 bool 属性,那么这个对象构造函数

    Pet myPet = new Pet("fish", 20.0, true); 
    

    无法编译。 “fish”参数是一个字符串,编译器将失败(假设您在对象构造函数中设置属性值)

    【讨论】:

    • 谢谢。因此如果是 Pet myPet = new Pet(1, 20.0, true);会是正确的吗?
    • 乍一看是的,但是需要查看构造函数代码。这不是像 setter 那样直接分配属性。构造函数中有一个逻辑,你需要检查第一个参数是否分配给 int 属性,第二个参数是否分配给 double,依此类推。另一种选择是使用内联构造函数: new Pet { YourStringParameter = "fish", YourDoubleParameter = 20.0, YourBoolParameter = true };
    【解决方案3】:

    你需要一个构造函数:

    public class Pet
    {
        public Pet(string type, double price, bool something)
        {
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      相关资源
      最近更新 更多