我想在C#中将字符串解析为可为空的int.也就是说.我希望返回字符串的int值,如果无法解析,则返回NULL.

我有点希望这能奏效

int? val = stringVal as int?;

但这行不通,所以我现在的做法是,我已经编写了这个扩展方法

public static int? ParseNullableInt(this string value)
{
    if (value == null || value.Trim() == string.Empty)
    {
        return null;
    }
    else
    {
        try
        {
            return int.Parse(value);
        }
        catch
        {
            return null;
        }
    }
}   

有更好的方法吗?

EDIT:谢谢你给我提的建议,我确实知道,但结果差不多.我更感兴趣的是,是否有一个内置的框架方法可以直接解析为可为null的int?

推荐答案

int.TryParse可能更容易一些:

public static int? ToNullableInt(this string s)
{
    int i;
    if (int.TryParse(s, out i)) return i;
    return null;
}

Edit@Glenn int.TryParse"内置于框架内".它和int.Parse是将字符串解析为int的the种方法.

.net相关问答推荐

.NET最小API BadRequest响应不返回正文

无法实例化类的代理:System.Net.HttpWebRequest.找不到无参数构造函数

我应该创建一个 DateRange 对象吗?

将 DataRowCollection 转换为 IEnumerable

如何获取 Sql Server 数据库中所有模式的列表

如何让 DateTimePicker 显示一个空字符串?

如何将浮点数向上舍入到 C# 中最近的 int?

带有输入字段的消息框

如何使用转储文件来诊断内存泄漏?

当程序员说针对接口而不是对象的代码时,他们是什么意思?

获取 .NET 程序集的 AssemblyInformationalVersion 值?

POCO 是什么意思?

一个接口是否应该继承另一个接口

Linq to SQL - 返回前 n 行

在 WPF DataGrid 中绑定 ComboBoxColumn 的 ItemsSource

清除文件内容

.NET 委托类型的正确命名约定?

在foreach循环中修改列表的最佳方法是什么?

从 bcp 客户端接收到 colid 6 的无效列长度

判断数据表中是否包含空值的最佳方法