【问题标题】:Difference between Convert and Parse c# [duplicate]转换和解析c#之间的区别[重复]
【发布时间】:2013-12-15 19:09:50
【问题描述】:

我想知道两者有什么区别,

(int)Something;

int.Parse(Something);

Convert.ToInt32(Something);

我问了我的朋友,没有人帮我解决这个问题。

我们将不胜感激。

谢谢。

【问题讨论】:

  • 因为谷歌搜索太主流了..
  • 因为 SO 是 Google 的开发者..
  • 看看框架的源代码...比问你的朋友更有教育意义。
  • @Abbas,因为它是唯一有答案的网站?

标签: c# parsing difference


【解决方案1】:

1) 那是一个演员表

2) 解析接收字符串并尝试将其转换为类型。

3) Convert 接受 object 作为其参数

一个主要区别是Convert 不会抛出ArgumentNullExceptionParse 会。如果它为空,您的演员也会抛出异常。你可以通过使用来解决这个问题

(int?)Something;

【讨论】:

    【解决方案2】:

    你的第一个案例:

    (int)Something;
    

    显式转换,所以有些东西会是双精度/浮点数等。如果它是一个字符串,你会得到一个错误。

    第二种情况:

    int.Parse(Something)
    

    int.Parse 将 sting 作为参数,因此 Something 必须是字符串类型。

    第三种情况:

    Convert.ToInt32(Something);
    

    Convert.ToInt32 有许多重载,它们采用objectstringbool 等类型的参数。

    【讨论】:

      【解决方案3】:

      没有区别,看MSDN就行了。

      使用 ToInt32(String) 方法相当于将值传递给 Int32.Parse(String) 方法。

      来源:http://msdn.microsoft.com/en-us/library/sf1aw27b(v=vs.110).aspx

      【讨论】:

        【解决方案4】:

        Convert.ToInt32(string)Int32.Parse(string) 的静态包装方法。

        Convert.ToInt32 的定义类似于(来自 ILSpy):

        // System.Convert
        /// <summary>Converts the specified string representation of a number to an equivalent 32-bit signed integer.</summary>
        /// <returns>A 32-bit signed integer that is equivalent to the number in <paramref name="value" />, or 0 (zero) if <paramref name="value" /> is null.</returns>
        /// <param name="value">A string that contains the number to convert. </param>
        /// <exception cref="T:System.FormatException">
        /// <paramref name="value" /> does not consist of an optional sign followed by a sequence of digits (0 through 9). </exception>
        /// <exception cref="T:System.OverflowException">
        /// <paramref name="value" /> represents a number that is less than <see cref="F:System.Int32.MinValue" /> or greater than <see cref="F:System.Int32.MaxValue" />. </exception>
        /// <filterpriority>1</filterpriority>
        [__DynamicallyInvokable]
        public static int ToInt32(string value)
        {
            if (value == null)
            {
                return 0;
            }
            return int.Parse(value, CultureInfo.CurrentCulture);
        }
        

        【讨论】:

        • 有一个问题:Convert.ToInt32 接受空参数,在这种情况下它返回默认值(即 0)
        猜你喜欢
        • 1970-01-01
        • 2021-03-25
        • 2011-05-19
        • 2023-03-29
        • 1970-01-01
        • 2020-04-04
        • 2015-11-26
        • 2012-12-14
        • 2021-02-28
        相关资源
        最近更新 更多