我知道这可能是一个简单的问题,但我在C#中想知道将set方法中的传入字符串解析为int的最佳方法是什么?如果我有
public int foo {get; set;}
在集合上我想解析传入的字符串
答案 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