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を使用できますか?null許容型として設定できます。ここを参照してください:http://www.codeproject.com/Articles/11854/C-2-0-Nullable-Types

于 2013-03-26T07:13:21.120 に答える
1

null許容整数を使用できます(詳細はこちら)。

null許容型は、基になる型のすべての値と、追加のnull値を表すことができます。

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

注: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)null許容できない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を返すとnullになります。

于 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 value = x.Value;

C#での文字列から数値への変換

于 2013-03-26T07:14:39.040 に答える