0

我正在尝试编写一个函数来将string“12345”的内容转换为int.

如果字符串为空白,我想返回null(未初始化),而不是值0

问题是,函数不会返回未初始化的值。

我的代码无法编译,因为 Retval 可以返回一个未初始化的值......

到目前为止我的尝试:

public int ConvertStringToNumber(String TheString)
{
    // Uninitialized
    int Retval;

    if (TheString.Length > 0)
    {
        // We have a valid string
        if (Int32.TryParse(TheString, out Retval))
        {
            // We have a valid Number
        }
    }

    // Return the number or null
    return Retval;
}
4

6 回答 6

8

你可以使用 Nullable int 吗?它将允许设置为 nullable 。见这里: http: //www.codeproject.com/Articles/11854/C-2-0-Nullable-Types

于 2013-03-26T07:13:21.120 回答
1

您可以使用可为空的 int(更多信息在这里)。

可空类型可以表示基础类型的所有值,以及一个额外的空值。

public int? ConvertStringToNumber(String TheString)
{
    int retval;
    bool isInt = Int32.TryParse(TheString, out retval);
    return isInt ? retval : null;
}

注意:使用可空类型时,您需要使用强制转换或获取它的值。见这里

例子:

int? n = ConvertStringToNumber("123");

int value = n.Value;
// or
int value = (int)n;
于 2013-03-26T07:16:56.507 回答
0

因为Int32.TryParse(TheString, out Retval)要求 int 类型不可为空

public int? ConvertStringToNumber(String TheString)
{

    // Uninitialized
    int Retval;

    if (TheString.Length > 0)
    {

        // We have a valid string

        if (Int32.TryParse(TheString, out Retval))
        {

            // We have a valid Number
            return Retval;
        }

    }

            // Return the number or null

    return null;
}
于 2013-03-26T07:22:48.407 回答
0

如果您在第一次为 Retval 对象分配了一个值,则该值仅在该区域有效。因此,当您返回它时,Retval 为空。

于 2013-03-26T08:27:10.743 回答
-1

解决您问题的简单扩展方法

using System;

namespace temp
{
    class Program
    {
        static void Main(string[] args)
        {
            string valu = "";
            Console.WriteLine(valu.ToInt32());
            Console.ReadLine();
        }
    }
    public static class MyExtentions
    {
        public static int ToInt32(this string s)
        {
            int x;
            if (s != null)
            {
                if (s.Length > 1)
                    x = Convert.ToInt32(s);
                else
                    x = 0;
            }
            else
            {
               x= 0;
            }
            return x;
        }
    }
}
于 2013-03-26T07:22:05.477 回答
-2
int? x = ConvertStringToNumber("1");

int 值 = x.Value;

c#中字符串到数字的转换

于 2013-03-26T07:14:39.040 回答