ホームページ > バックエンド開発 > C++ > C# で汎用 TryParse メソッドを実装するにはどうすればよいですか?

C# で汎用 TryParse メソッドを実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-04 05:07:43
オリジナル
632 人が閲覧しました

How Can I Implement a Generic TryParse Method in C#?

汎用 TryParse: 代替アプローチの探索

指定された型への文字列変換を検証するために「TryParse」を使用して汎用拡張機能を実装しようとすると、問題が発生する可能性がありますインターフェイス メソッドとして「TryParse」がないため、課題が生じます。この記事では、この障害を克服するための潜在的な解決策を検討します。

コミュニティによって提案されたアプローチの 1 つは、TypeDescriptor クラスを利用します。このクラスは、特定の型のコンバーターを取得する方法を提供します。取得したコンバーターで ConvertFromString メソッドを呼び出すことにより、文字列入力を目的の型に変換できます。このメソッドは、変換中に発生する可能性のある例外も処理します。

public static T Convert<T>(this string input)
{
    try
    {
        var converter = TypeDescriptor.GetConverter(typeof(T));
        if(converter != null)
        {
            // Cast ConvertFromString(string text) : object to (T)
            return (T)converter.ConvertFromString(input);
        }
        return default(T);
    }
    catch (NotSupportedException)
    {
        return default(T);
    }
}
ログイン後にコピー

または、ターゲットの型をパラメータとして受け入れるようにコードを変更し、ジェネリックスの必要性を排除することもできます。このアプローチにより、変換プロセスをより詳細に制御できるようになります。

public static bool Is(this string input, Type targetType)
{
    try
    {
        TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
        return true;
    }
    catch
    {
        return false;
    }
}
ログイン後にコピー

例外ベースのアプローチは型破りに見えるかもしれませんが、一般的な文字列変換を実行するという課題に対する実行可能なソリューションを提供します。

以上がC# で汎用 TryParse メソッドを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート