【问题标题】:How to convert string to integer in C#如何在C#中将字符串转换为整数
【发布时间】:2011-01-21 14:41:44
【问题描述】:

如何在 C# 中将字符串转换为整数?

【问题讨论】:

标签: c# .net string int type-conversion


【解决方案1】:

如果您确定它会正确解析,请使用

int.Parse(string)

如果不是,请使用

int i;
bool success = int.TryParse(string, out i);

注意!在下面的例子中,i 将等于 0,而不是 TryParse 之后的 10。

int i = 10;
bool failure = int.TryParse("asdf", out i);

这是因为 TryParse 使用 out 参数,而不是 ref 参数。

【讨论】:

  • @sslaitha,谢谢。如果它充分回答了您的问题,请记得将其标记为答案。
  • 请注意,如果你有 int i = 10;并使用 int.TryParse("asdf", out i);我将包含 0 而不是 10 !!!这是因为 TryParse 使用 out 变量,而不是 ref。
  • “警告”适用于第三个示例 - 而不是第二个示例。让我有点困惑,因为我希望“this”指的是上面的例子,而不是下面的例子。
【解决方案2】:
int myInt = System.Convert.ToInt32(myString);

正如其他几个人提到的,您也可以使用int.Parse()int.TryParse()

如果您确定string 将始终是int

int myInt = int.Parse(myString);

如果您想先检查string 是否真的是int

int myInt;
bool isValid = int.TryParse(myString, out myInt); // the out keyword allows the method to essentially "return" a second value
if (isValid)
{
    int plusOne = myInt + 1;
}

【讨论】:

    【解决方案3】:
    int a = int.Parse(myString);
    

    或者更好的是,查看int.TryParse(string)

    【讨论】:

      【解决方案4】:
      string varString = "15";
      int i = int.Parse(varString);
      

      int varI;
      string varString = "15";
      int.TryParse(varString, out varI);
      

      int.TryParse 更安全,因为如果您在varString 中添加其他内容(例如“fsfdsfs”),您会遇到异常。通过使用int.TryParse,当字符串无法转换为int时,它将返回0

      【讨论】:

        【解决方案5】:

        执行以下操作:

        var result = Int32.Parse(str);
        

        【讨论】:

          【解决方案6】:

          如果您确定字符串中有“实数”数字,或者您对可能出现的任何异常情况感到满意,请使用它。

          string s="4";
          int a=int.Parse(s);
          

          要对流程进行更多控制,请使用

          string s="maybe 4";
          int a;
          if (int.TryParse(s, out a)) {
              // it's int;
          }
          else {
              // it's no int, and there's no exception;
          }
          

          【讨论】:

            【解决方案7】:

            4 techniques are benchmarked here.

            最快的方法竟然是:

            y = 0;
            for (int i = 0; i < s.Length; i++)
                   y = y * 10 + (s[i] - '0');
            

            "s" 是您要转换为 int 的字符串。此代码假定您在转换期间不会有任何异常。因此,如果您知道您的字符串数据将始终是某种 int 值,那么上面的代码是获得纯速度的最佳方式。

            最后,“y”将具有您的 int 值。

            【讨论】:

              【解决方案8】:
              int i;
              string whatever;
              
              //Best since no exception raised
              int.TryParse(whatever, out i);
              
              //Better use try catch on this one
              i = Convert.ToInt32(whatever);
              

              【讨论】:

                【解决方案9】:
                bool result = Int32.TryParse(someString, out someNumeric)
                

                此方法将尝试将someString转换为someNumeric,如果转换成功则返回result,如果转换成功则返回true,如果转换失败则返回false。请注意,如果转换失败,则此方法不会像 Int32.Parse 方法那样抛出异常,而是为 someNumeric 返回零。

                更多信息,你可以在这里阅读:

                https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
                &
                How to convert string to integer in C#

                【讨论】:

                  【解决方案10】:
                  int i;
                  
                  string result = Something;
                  
                  i = Convert.ToInt32(result);
                  

                  【讨论】:

                    【解决方案11】:

                    你可以使用任何一个,

                        int i = Convert.ToInt32(myString);
                    

                        int i =int.Parse(myString);
                    

                    【讨论】:

                      【解决方案12】:
                      class MyMath
                      {
                          public dynamic Sum(dynamic x, dynamic y)
                          {
                              return (x+y);
                          }
                      }
                      
                      class Demo
                      {
                          static void Main(string[] args)
                          {
                              MyMath d = new MyMath();
                              Console.WriteLine(d.Sum(23.2, 32.2));
                          }
                      }
                      

                      【讨论】:

                        猜你喜欢
                        • 2011-04-21
                        • 2021-08-15
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-03-06
                        • 1970-01-01
                        • 1970-01-01
                        • 2010-10-05
                        • 2012-03-28
                        相关资源
                        最近更新 更多