10

VB6に戻って、文字列のnullと''、数値のnullと0などの違いを気にせずにコーディングできる関数をいくつか作成しました。特別な場合を追加することほど、コーディング時に生産性を損なうものはありません。無関係なエラーを引き起こす可能性のあるデータを処理するためのコード。9999/10000数値として使用しているものがヌルの場合、実際には0として扱います。

私は現在C#を使用していますが、VB6とC#2005の違いは非常に大きいので、新しいヘルパー関数のセットをどこから書き始めればよいのか、あるいはそれらを実行する必要があるのか​​どうかさえわかりません。 。

したがって、文字列、データベースフィールド、リクエストフォーム/クエリフィールド、???を受け入れる関数を記述し、それをDoubleに変換して、呼び出し元のプロシージャに返すためにできることは何でもする必要があります。 。

また、shorts、int16、int32、long、その他私が気にする可能性のあるすべてのものに対してこれを行う必要があります。

次に、文字列に対してこれを行います。そして日付。

これは価値のある追求ですか?フレームワークまたはC#に、代わりに使用できるものはありますか?他の関数を呼び出す際にデータをインラインで使用でき、一時変数などを作成する必要がないものが本当に必要です。

4

4 に答える 4

36

組み込みの変換関数のスカッドがあります。しかし...私はそれらのどれかがあなたが望むことを正確に行うかどうかわかりません。一般に、.NETメソッドは、無効な入力が渡​​されると注意を怠り、例外をスローします。

幸い、ユーティリティメソッドを簡単に記述して、数値の文字列表現、空の文字列、空の文字列、またはnull文字列を任意の出力型に変換できます。

public static T SafeConvert<T>(string s, T defaultValue)
{
    if ( string.IsNullOrEmpty(s) )
        return defaultValue;
    return (T)Convert.ChangeType(s, typeof(T));
}

使用する:

SafeConvert(null, 0.0) == 0.0;
SafeConvert("", 0.0) == 0.0;
SafeConvert("0", 0.0) == 0.0;

このジェネリックメソッドは、渡された文字列がnullまたは空の場合のデフォルト値として使用される2番目の引数の型から戻り型を取得します。合格0すれば、あなたはIn32戻ってきます。パス0LInt64。等々...

于 2008-10-04T17:41:41.883 に答える
6

C#では、ほとんどのデータ型(数値、日付など)はヌル可能ではなく、文字列のみがヌル可能です。DBからデータを取得している場合は、Nullable、またはその構文上糖化されたバージョン、int?、double?、DateTime?などを使用している可能性があります。

すべてのnullableには、実際の値、またはnullの場合はデフォルト値を取得できるメソッドがあります。これは、これらの関数の作成を回避するのに役立ちます。

文字列に関しては、String.IsNullOrEmpty(str)関数があります。

利用できない特別な機能が必要な場合は、拡張メソッドを追加することもできます。コードで処理する限り、拡張メソッドをnull値に適用できることに注意してください。例えば:

public static string ValueOrDefault(this string str) 
{
     if (String.IsNullOrEmpty(str)) return MY_DEFAULT_VALUE;
     else return str;
}
于 2008-10-04T17:35:08.493 に答える
1

.NETライブラリにはConvertというクラスがあります。これには、任意の基本タイプといくつかの一般的なクラス(DateTimeなど)から必要なものに変換できる関数があります。

基本的にはConvert.ToInt32(val);のように機能します。

編集:私は本当にすべての単語を読むことを学ぶ必要があります。nullの心配はありませんでした...これには演算子があります。あなたは??を使うことができます nullをチェックし、デフォルトを提供して、それが機能する可能性があります。

また、LINQを調べたいと思うかもしれません。それは、その種のマッピングの多くを処理します。

于 2008-10-04T17:37:15.073 に答える