0

そのため、StackOverflow で Delphi の StrToIntDef 関数に相当する決定的なものを見つけることを期待していましたが、できません。

以下を実装...

public static int StrToIntDef(string s, int def)
{

}
4

4 に答える 4

25

通常の数字

public static int StrToIntDef(string s, int @default)
{
    int number;
    if (int.TryParse(s, out number))
        return number;
    return @default;
}

このメソッドは、初心者が知らない可能性が高いいくつかのより高度な C# 機能を使用しています。それらは次のとおりです。

  • デフォルトの前に追加し@ます。これは、C# キーワードであるため、コンパイル エラーを防ぐためです。
  • number引数を として渡すとout、値型であるにもかかわらず、 number が関数内で更新されて返されることを意味します。

異なる数のスタイル

さまざまなスタイルの数値を解析するために使用できる追加のオーバーロードがあります。

public static bool TryParse(
    string s,
    NumberStyles style,
    IFormatProvider provider,
    out int result
)

NumberStyles通貨や 16 進数などの異常な形式の数値を解析するために、このオーバーロードと組み合わせて使用​​できるリストを次に示します。

  • None
  • AllowLeadingWhite
  • AllowTrailingWhite
  • AllowLeadingSign
  • AllowTrailingSign
  • AllowParentheses
  • AllowDecimalPoint
  • AllowThousands
  • AllowExponent
  • AllowCurrencySymbol
  • AllowHexSpecifier
  • Integer
  • HexNumber
  • Number
  • Float
  • Currency
  • Any

たとえば、16 進数を渡すと、次のようになります。

string hex = "AB";
int hexInt = int.Parse(hex, NumberStyles.HexNumber);

または、括弧と空白を削除します:

string number = "  (2)  ";
int castedNumber = int.Parse(num, NumberStyles.AllowParentheses |                        
    NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite);

詳細については、MSDNを参照してください。

参考文献

于 2013-03-20T11:34:01.757 に答える
9
public static int StrToIntDef(string s, int def)
{
    int temp;
    if (!Int32.TryParse(s, out temp))
        return def;

    return temp;
}
于 2013-03-20T11:33:47.490 に答える
3

次を発行できますTryParse

int val;
var success = Int.TryParse("1", out val);

または、直接変換することもできます:

int val = Convert.ToInt32("1");

要するに、独自の関数は必要ありません。もちろん、0変換しない場合以外のデフォルト値を指定する必要がある場合を除きます。その場合は、メソッドを活用TryParseし、機能しない場合は、渡されたデフォルトを返します。

于 2013-03-20T11:34:04.550 に答える
1

これを試して。

int outputInteger;
int.TryParse(inputString, out outputInteger);
于 2013-03-20T11:35:54.403 に答える