代码之家  ›  专栏  ›  技术社区  ›  lomaxx

C#属性可以接受多个值吗?

  •  8
  • lomaxx  · 技术社区  · 17 年前

    例如,假设我有一个公共int属性,并且我总是希望它返回一个int,但是我希望能够通过分配一个decimal、一个integer或其他数据类型来设置该属性。所以我的问题是,属性是否可以接受多个值?

    5 回复  |  直到 16 年前
        1
  •  10
  •   Nick Berardi    17 年前

    我想你想问的是: 怎么做 implicit 和 explicit 铸造工作 int decimal ?

    int 十进制的 因为它们已经在框架中定义,您无法缩小 把它扔到一个 . 但如果您将其用作创建的实际对象的示例,则可以使用 含蓄的 上面的链接,以了解更多关于如何工作以及如何实现它的信息。

    但您始终可以使用convert方法将它们转换为正确的类型;

    public int MyProperty { get; set; }
    ...
    obj.MyProperty = Convert.ToInt32(32.0M);
    obj.MyProperty = Convert.ToInt32(40.222D);
    obj.MyProperty = Convert.ToInt32("42");
    
        2
  •  2
  •   Joe Phillips    17 年前

    编辑:

    重载方法 (多态性)。

    这就是通常所说的 塞特 (或mutator),您可以重载该方法以接受多种不同类型的参数。如果你愿意,每一个都会有不同的表现。我设置它们的方式可能在语法上不正确,但我相信这是您正在寻找的总体想法。

    public class MyClass {
      private Int32 mySomeValue;
      public void setSomeValue(Double value) { this.mySomeValue = Convert.ToInt32(value); }
      public void setSomeValue(Int32 value) { this.mySomeValue = value; }
    }
    
        3
  •  1
  •   John Saunders    17 年前

        4
  •  1
  •   JP Alioto    17 年前

    看起来您必须在运行时确定类型。您可以让属性接受对象,确定类型并执行操作。当然,对于您不期望的事情,您必须抛出异常。就像你说的,可能不是最好的,但可能是

        5
  •  -1
  •   yfeldblum    17 年前