如何将字符串转换为数字,以便在C#中添加另一个数字?

时间:2013-11-25 15:01:15

标签: c# string int

如果我有一个类似"20"的字符串,如何将其转换为整数,以便将其添加到另一个数字?

这里有一些代码可以解释我希望它如何:

string myString = "20";
myString = myString + 2;

现在字符串myString应为"22"

7 个答案:

答案 0 :(得分:5)

您需要将字符串转换为int,然后再添加。稍后您可以将结果int转换为字符串。

要将字符串转换为整数,您可以使用Convert.ToInt32int.Parse或更安全的选项int.TryParse,如果字符串无效,则不会引发异常。

int number1;
int number2 = 2;

if(!int.TryParse(myString, out number1)
{
  //invalid string
}
string result = (number1 + number2).ToString();

答案 1 :(得分:4)

string myString = "20";
myString = Convert.ToString(Convert.ToInt32(myString) + 2);

答案 2 :(得分:3)

你需要解析字符串才能算术:

string myString = "20";
myString = (int.Parse(myString) + 2).ToString();

答案 3 :(得分:0)

这就是它可以做到的方式

string myString = "20";
int val = Convert.ToInt32(myString);
myString = (val + 2).ToString;

答案 4 :(得分:0)

另一种有趣的方法是:

   using System.Data;

   //...

   string myString = "20";
   string addition = "+ 2";

   DataTable dt = new DataTable();

   myString = dt.Compute(myString + addition, string.Empty).ToString();

这里更有趣:

using System;
using System.CodeDom.Compiler;

//...

string myString = "20";

CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
ICodeCompiler icc = codeProvider.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
CompilerResults results = icc.CompileAssemblyFromSource(
    parameters,
    string.Format(@"
namespace N{{
public static class C{{
public static string M(){{
return ({0} + {1}).ToString();
}}}}}}",
        myString,
        "2"));

myString = results
    .CompiledAssembly
    .GetType("N.C")
    .GetMethod("M")
    .Invoke(null, null)
    .ToString();

当然,除非没有别的办法,否则不建议这样做。仅作为好奇心发布: - )

答案 5 :(得分:0)

不确定您的实际需求,但对于示例代码,您可能会更好:

int myInt = 20;

myInt = myInt + 2;

//To do something:
something.Text = myInt.ToString();

答案 6 :(得分:0)

string myString = "20";
int num = Convert.ToInt32(myString) + 2;
myString = num.toString();