【问题标题】:convert from int to byte从 int 转换为 byte
【发布时间】:2010-01-28 18:12:48
【问题描述】:

System.ArgumentException: Object must be of type Int32.

在这段代码中:

MyBO target = new MyBO() { x1 = 20 };

MyBO我有一个属性:public byte x1 {get; set;}

怎么了?我试过MyBO target = new MyBO() { x1 = (byte)20 };,但我得到了同样的错误。 请帮忙。

谢谢!

【问题讨论】:

  • 这是什么语言?也请添加到标签列表中...
  • 它似乎是 C#,给定对象初始化器和 System.ArgumentException
  • 你确定这是错误发生的地方吗?我用类似的声明做了一个类似的类,没有问题。
  • 那不是属性,那是属性。发布重现错误的真实代码。
  • 根据答案之一的 cmets,问题中给出的代码与导致错误的代码不同。在提问者发布完整信息之前,什么都做不了。

标签: c# type-conversion byte


【解决方案1】:
MYBO target=new MyBO();
target.x1=Convert.ToByte(20);

【讨论】:

    【解决方案2】:

    您确定错误来自该行吗?我运行这段代码没有问题:

    class MyBO
    {
        public byte x1 { get; set; }   
    }
    
    // ...
    public static void Main(string[] args)
    {
        MyBO my1 = new MyBO() {x1 = 20};
        MyBO my2 = new MyBO() {x1 = (byte)20};
        MyBO my3 = new MyBO() {x1 = Convert.ToByte(20)};
    }
    

    【讨论】:

    • 所以发布你的真实代码,因为上面的代码不会重现你的错误
    【解决方案3】:

    您是否尝试过显式转换为字节?


    MyBO target = new MyBO() { x1 = (byte) 20 };

    【讨论】:

    • 好的,那么问题是:如果我有一个验证规则,比如:[RangeValidator(0, RangeBoundaryType.Inclusive, 20, RangeBoundaryType.Inclusive, Ruleset="validate_x1")] public byte x1 {得到;放;如果我有 MyBO my1 = new MyBO() {x1 = 20},我得到了那个错误。为什么?
    • 那么你能告诉我为什么我在 MyBO 类中使用 RangeValidator 时会出现这个错误吗?
    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 2012-02-05
    • 2015-08-16
    • 2010-11-08
    • 2014-05-04
    • 2014-03-05
    相关资源
    最近更新 更多