5

重複の可能性:
C# .Net の拡張機能を投稿してください (codeplex.com/extensionoverflow)

私は C# 3.0 が好きです。私のお気に入りの部分の 1 つは、拡張メソッドです。

私は拡張メソッドを、クラスの幅広いベースに適用できるユーティリティ関数と考えるのが好きです。この質問は主観的であり、クローズされる可能性が高いと警告されていますが、「XML のエスケープ文字列」のような比較的静的なことを行うための「ボイラープレート」コードを誰もが持っているため、良い質問だと思いますが、まだ見つけていませんこれらを集める場所。

特に、ロギング/デバッグ/プロファイリング、文字列操作、およびデータベース アクセスを実行する一般的な機能に関心があります。これらのタイプの拡張メソッドのライブラリはどこかにありますか?

編集:コード例を回答に移動しました。(コードをクリーンアップしてくれた Joel に感謝します!)

4

3 に答える 3

6

MiscUtilが好きかもしれません。

また、多くの人がこれを気に入っています:

public static bool IsNullOrEmpty(this string s)
{
    return s == null || s.Length == 0;
}

しかし、10回以上のうち9回はnullでも空でもないことを確認しているため、個人的には次のように使用しています。

public static bool HasValue(this string s)
{
    return s != null && s.Length > 0;
}

最後に、最近手に入れたもの:

public static bool IsDefault<T>(this T val)
{
    return EqualityComparer<T>.Default.Equals(val, default(T));
}

デフォルト値の DateTime、bool、integer などの値型と、null の string などの参照型の両方をチェックするために機能します。不気味なオブジェクトでも機能します。

于 2009-05-28T21:58:14.213 に答える
3

これが私のいくつかです:

// returns the number of milliseconds since Jan 1, 1970 (useful for converting C# dates to JS dates)
public static double UnixTicks(this DateTime dt)
{
    DateTime d1 = new DateTime(1970, 1, 1);
    DateTime d2 = dt.ToUniversalTime();
    TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
    return ts.TotalMilliseconds;
}

および ToDelimitedString 関数:

// apply this extension to any generic IEnumerable object.
public static string ToDelimitedString<T>(this IEnumerable<T> source, string delimiter, Func<T, string> action)
{
    if (source == null)
    {
        throw new ArgumentException("Source can not be null.");
    }

    if (delimiter == null)
    {
        throw new ArgumentException("Delimiter can not be null.");
    }

    string strAction = string.Empty;
    string delim = string.Empty;
    var sb = new StringBuilder();

    foreach (var item in source)
    {
        strAction = action.Invoke(item);

        sb.Append(delim);
        sb.Append(strAction);
        delim = delimiter;
    }
    return sb.ToString();
}
于 2009-05-28T22:19:56.433 に答える
2

以下は、String.Join を使用して記述された Jeff の ToDelimitedString です。

public static string ToDelimitedString<T>(this IEnumerable<T> source, string delimiter, Func<T, string> action) {
    // guard clauses for arguments omitted for brevity

    return String.Join(delimiter, source.Select(action));
}
于 2009-05-28T22:34:15.890 に答える