Parse 诉 TryParse

发布于 2024-07-12 10:16:46 字数 214 浏览 14 评论 0原文

Parse() 和 TryParse() 有什么区别?

int number = int.Parse(textBoxNumber.Text);

// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);

是否有某种形式的错误检查,例如 Try-Catch 块?

What is the difference between Parse() and TryParse()?

int number = int.Parse(textBoxNumber.Text);

// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);

Is there some form of error-checking like a Try-Catch Block?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

深巷少女 2024-07-19 10:16:46

如果 Parse 无法解析该值,则会抛出异常,而 TryParse 返回一个 bool 指示是否成功。

TryParse 不仅仅在内部进行 try/catch - 它的重点在于它的实现没有异常,因此速度很快。 事实上,它最有可能实现的方式是,Parse 方法在内部调用 TryParse,然后在返回 false 时抛出异常。

简而言之,如果您确定该值有效,请使用Parse; 否则使用 TryParse

Parse throws an exception if it cannot parse the value, whereas TryParse returns a bool indicating whether it succeeded.

TryParse does not just try/catch internally - the whole point of it is that it is implemented without exceptions so that it is fast. In fact the way it is most likely implemented is that internally the Parse method will call TryParse and then throw an exception if it returns false.

In a nutshell, use Parse if you are sure the value will be valid; otherwise use TryParse.

往日 2024-07-19 10:16:46

如果字符串无法转换为整数,则

  • int.Parse() 将抛出异常
  • int.TryParse() 将返回 false(但不抛出异常)

If the string can not be converted to an integer, then

  • int.Parse() will throw an exception
  • int.TryParse() will return false (but not throw an exception)
青丝拂面 2024-07-19 10:16:46

TryParse 方法允许您测试某些内容是否可解析。 如果您在第一个实例中尝试使用无效 int 进行 Parse,那么在 TryParse 中您将收到异常,它会返回一个布尔值,让您知道解析是否成功。

作为脚注,将 null 传递给大多数 TryParse 方法将引发异常。

The TryParse method allows you to test whether something is parseable. If you try Parse as in the first instance with an invalid int, you'll get an exception while in the TryParse, it returns a boolean letting you know whether the parse succeeded or not.

As a footnote, passing in null to most TryParse methods will throw an exception.

云归处 2024-07-19 10:16:46

TryParse 和异常税

如果从字符串转换为指定的数据类型失败,而 TryParse 显式避免抛出异常。

TryParse and the Exception Tax

Parse throws an exception if the conversion from a string to the specified datatype fails, whereas TryParse explicitly avoids throwing an exception.

鸠魁 2024-07-19 10:16:46

TryParse 不返回值,它返回一个状态代码来指示解析是否成功(并且不会抛出异常)。

TryParse does not return the value, it returns a status code to indicate whether the parse succeeded (and doesn't throw an exception).

聊慰 2024-07-19 10:16:46

作为记录,我正在测试两个代码:这只是尝试从字符串转换为数字,如果失败则将数字分配为零。

        if (!Int32.TryParse(txt,out tmpint)) {
            tmpint = 0;
        }

并且:

        try {
            tmpint = Convert.ToInt32(txt);
        } catch (Exception) {
            tmpint = 0;
        }

对于c#,最好的选择是使用tryparse,因为try&Catch替代方案会抛出异常

A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

,这是痛苦的缓慢且不可取的,但是,除非解决了调试的异常并停止,否则代码不会停止。

For the record, I am testing two codes: That simply try to convert from a string to a number and if it fail then assign number to zero.

        if (!Int32.TryParse(txt,out tmpint)) {
            tmpint = 0;
        }

and:

        try {
            tmpint = Convert.ToInt32(txt);
        } catch (Exception) {
            tmpint = 0;
        }

For c#, the best option is to use tryparse because try&Catch alternative thrown the exception

A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

That it is painful slow and undesirable, however, the code does not stop unless Debug's exception are settled for stop with it.

甜宝宝 2024-07-19 10:16:46

我知道这是一篇非常老的文章,但想分享一些关于 Parse 与 TryParse 的更多细节。

我有一个场景,其中 DateTime 需要转换为 String,如果 datevalue null 或 string.empty 我们将面临异常。 为了克服这个问题,我们用 TryParse 替换了 Parse 并将获得默认日期。

旧代码:

dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");

新代码:

DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);

必须声明另一个变量并用作 TryParse 的 Out。

I know its a very old post but thought of sharing few more details on Parse vs TryParse.

I had a scenario where DateTime needs to be converted to String and if datevalue null or string.empty we were facing an exception. In order to overcome this, we have replaced Parse with TryParse and will get default date.

Old Code:

dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy");
dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy");

New Code:

DateTime startDate = default(DateTime);
DateTime endDate=default(DateTime);
DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate);
DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate);

Have to declare another variable and used as Out for TryParse.

荒路情人 2024-07-19 10:16:46

double.Parse("-"); 引发异常,同时
double.TryParse("-", 已解析); 解析为0
所以我猜 TryParse 会进行更复杂的转换。

double.Parse("-"); raises an exception, while
double.TryParse("-", out parsed); parses to 0
so I guess TryParse does more complex conversions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文