在Set方法中解析

时间:2015-03-17 14:46:38

标签: c# string parsing int tryparse

我知道这可能是一个简单的问题,但我在C#中想知道将set方法中的传入字符串解析为int的最佳方法是什么?如果我有 public int foo {get; set;}

在集合上我想解析传入的字符串

5 个答案:

答案 0 :(得分:2)

有很多方法可以给这只猫上皮。我就是这样做的。

假设您的财产是:

public int Foo
{
   get { return _foo; }
   set { _foo = value; }
}

你可以在你的类上添加一个帮助方法:

public void SetFoo(string sFoo)
{
   Foo = Convert.ToInt32(sFoo);
}

然后,当您需要使用字符串设置值时,可以调用该方法:

myFooObject.SetFoo("4");

答案 1 :(得分:2)

我猜你有一些string,你想通过setter将其解析为int。当然,您可以这样做,但属性必须是string

private int foo

public string Foo
{
    get 
    { 
        return foo.ToString();
    }

    set
    {
        foo = Int32.Parse(value);
    }
}

但请记住,如果您的字符串不是数字,Int32.Parse()会抛出异常。您应该考虑使用Int32.TryParse(),在这种情况下,这可能是更好的选择。

答案 2 :(得分:0)

你是说这个吗?

private int _foo;
public int Foo 
{
  get { return _foo; }
  set 
  { 
    _foo = value; 
    ParseFoo(_foo);
  }
}

但是因为你正在谈论字符串......

private string _foo;
public string Foo 
{
    get { return _foo; }
    set {
        _foo = value;
        ParseIncomingString(_foo);
    }
}

答案 3 :(得分:0)

由于该属性属于int类型,因此无法为其分配string。因此,在将值分配给属性之前,需要先进行解析。

或者,您可以使您的setter 私有,并使用public方法获取string,并在方法内部进行验证,如果验证成功,则设置属性。

答案 4 :(得分:0)

我建议您在自动调用set方法之前将其设置为属性,以确保您的值为int。这意味着您要设置为属性的字符串应在设置之前进行解析。

如果你想按照你的要求去做,你可以简单地使用Int32.Parse(value)或Int32.TryParse(value)。

这两者之间的区别在于,如果解析失败,Parse(value)方法会抛出异常,这意味着如果要捕获异常并且TryParse(value)返回false,则必须使用try-catch块解析失败,成功时也是如此。

您可以在以下网址了解详情:https://msdn.microsoft.com/en-us/library/bb397679.aspx