前回は、文字列が日時として妥当かどうかを返す拡張メソッドを作成しました。
blog.jhashimoto.net
そこで、今回は、文字列が指定された書式の日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeExactを作成してみます。
続きを読む前回は、文字列が日時として妥当かどうかを返す拡張メソッドを作成しました。
blog.jhashimoto.net
そこで、今回は、文字列が指定された書式の日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeExactを作成してみます。
続きを読む文字列の変換は不要で、日時として妥当かどうかを知りたいだけの場合、DateTime.TryParseを使うのは、煩わしいですよね。
DateTime result; // わざわざ変数を宣言しなければならない。 bool isValid = DateTime.TryParse("2016/01/01", out result);
そこで、文字列が日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeを書いてみました。
続きを読むList<T>にはAddRangeがありますが、なぜかHashSet<T>にはありません。
拡張メソッドで実装してみました。
using System; using System.Collections.Generic; namespace Extensions { public static class HashSetExtensions { /// <summary> /// 指定したコレクションの要素を<see cref="System.Collections.Generic.HashSet<T>"/>の末尾に追加します。 /// </summary> /// <typeparam name="T">ハッシュセット内の要素の型。</typeparam> /// <param name="self"><see cref="System.Collections.Generic.HashSet<T>"/>のインスタンス。</param> /// <param name="collection"> /// <see cref="System.Collections.Generic.HashSet<T>"/>の末尾に要素が追加されるコレクション。 /// コレクション自体をnullにすることはできませんが、型<typeparamref name="T"/>が参照型の場合、 /// コレクションに格納する要素はnullであってもかまいません。 /// </param> public static void AddRange<T>(this HashSet<T> self, IEnumerable<T> collection) { if (self == null) throw new NullReferenceException(string.Format("nullに対して{0}を呼び出すことはできません。", nameof(AddRange))); if (collection == null) throw new ArgumentNullException(nameof(collection), "パラメーターがnullです。"); foreach (T item in collection) { self.Add(item); } } } }
using System; using System.Collections.Generic; namespace Extensions { class Program { static void Main(string[] args) { HashSet<int> hashSet = new HashSet<int>() { 1, 2, 3 }; hashSet.AddRange(new List<int>() { 2, 3, 4 }); foreach (int i in hashSet) { Console.WriteLine(i); } Console.ReadKey(); } } }
ちゃんと、重複が排除されています。
String.TrimStartは、引数がcharです。Stringが引数のオーバーロードを書いてみました。
続きを読むToListがあるなら、ToCollectionがあってもいいと思い、書いてみました。
続きを読む指定した文字列を削除した文字列を取得する拡張メソッドRemoveです。
続きを読む