C# c语言中字符串到数字的转换#

C# c语言中字符串到数字的转换#,c#,string,numbers,C#,String,Numbers,我正在尝试编写一个函数,将字符串的内容“12345”转换为int 如果字符串为空,我希望返回null(未初始化),而不是值0 问题是,函数不会返回未初始化的值 我的代码不会编译,因为Retval可能返回未初始化的值 我迄今为止的努力: public int ConvertStringToNumber(String TheString) { // Uninitialized int Retval; if (TheString.Length > 0) {

我正在尝试编写一个函数,将
字符串的内容
“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;
}

你能用Nullable int吗?它将允许设置为可空。请参见此处:

您可以使用Nullable int吗?它将允许设置为可空。请看这里:

int值=x.值

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

int值=x.值


在c#

中,字符串到数字的转换可以使用可为空的int(详细信息)

可为null的类型可以表示基础类型的所有值,并且 一个附加的空值

注意:当使用可空类型时,需要使用强制转换或获取其值。看

示例:

int? n = ConvertStringToNumber("123");

int value = n.Value;
// or
int value = (int)n;

您可以使用可为null的int(更多信息)

可为null的类型可以表示基础类型的所有值,并且 一个附加的空值

注意:当使用可空类型时,需要使用强制转换或获取其值。看

示例:

int? n = ConvertStringToNumber("123");

int value = n.Value;
// or
int value = (int)n;

解决问题的简单扩展方法

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;
        }
    }
}

解决问题的简单扩展方法

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;
        }
    }
}
由于
Int32.TryParse(字符串,out-Retval)
要求int-type不可为null

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;
}
由于
Int32.TryParse(字符串,out-Retval)
要求int-type不可为null

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;
}

如果第一次为Retval对象指定了值,则该值仅在该区域有效。
因此,返回Retval时,该值为null。

如果第一次为Retval对象赋值,则该值仅在该区域有效。 因此,Retval在返回时为null