我有以下场景。我在Winforms中使用App.config,并且我有一个设置为int的值(在设置中)。我想将此值用作标签文本。 我是否更正标签只能显示字符串值? 这是我在这里所做的,但没有得到预期的结果(标签的值):
int ExclRate = Properties.Settings.Default.PriorExclTimer;
string ExclTime = ExclRate.ToString();
ExclTime = label60.Text;
PriorExclTimer是app.config中值的类型。
如果我将app.config中的值设置为string,我可以使这个工作,但这意味着我必须在程序的一个更敏感的部分从字符串转换为int,我宁愿不必这样做如果可能的话。这条线有效:
label60.Text = Properties.Settings.Default.PriorExclTimer;
我对C#很新,所以我真的感觉很好。感谢...
答案 0 :(得分:2)
在C#中,您无法直接将int
分配给string
。它必须始终进行转换(将字符串解析为整数,或从整数中获取字符串)。
正如您所说,最好将整数转换为字符串以用于显示目的。标签不能直接显示整数,所以你总是需要转换它,或者如果它不够就写一些包装类。
请注意ToString()
是特定于文化的,即它将使用当前线程中的文化。它可能是也可能不是你想要的。如果您需要InvariantCulture
,可以使用ToString(CultureInfo.InvariantCulture)
。
P.S。正如评论中所提到的,您可以执行各种技巧,例如ExclRate + ""
或C#6 ${ExclRate}
,但它们基本上都是将整数转换为字符串。我猜他们都在里面打电话给ToString()
。
答案 1 :(得分:0)
这对我有用:
int ExclRate = Properties.Settings.Default.PriorExclTimer;
label60.Text = ExclRate.ToString();
非常感谢有关此主题的见解。对于我正在进行的项目,我将在字符串中操作数据...
答案 2 :(得分:0)
int ExclRate = Properties.Settings.Default.PriorExclTimer;
label60.Text = ExclRate.ToString();
如果PriorExclTimer
为空或空,则上面的代码会给出异常。因此,最好使用int.TryParse
将其分配给int。不是在这种情况下,但是ToString
不处理null
情况,它会给出异常。所以你应该试试Convert.ToString
。
在进行字符串操作时,您必须处理文化和大小写(字符串区分大小写或不区分大小写)