コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【C#】シーケンスを指定された要素数で分割する拡張メソッド

ソースコード using System.Collections.Generic; using System.Linq; public static class IEnumerableExt { public static IEnumerable<IEnumerable<T>> Chunks<T> ( this IEnumerable<T> self, int size ) { while ( self.Any() ) { yield return self.Take( size ); self = se</t></t></ienumerable<t>…

【C#】List のサイズを設定できる拡張メソッド

ソースコード using System; using System.Collections.Generic; /// <summary> /// List 型の拡張メソッドを管理するクラス /// </summary> public static class ListExtensions { /// <summary> /// サイズを設定します /// </summary> public static void SetSize<T>( this List<T> self, int size ) {</t></t>…

【C#】C# で使用できる拡張メソッドが豊富にまとめられている「EXTENSIONMETHOD.NET」紹介

概要 http://www.extensionmethod.net/ 上記の「EXTENSIONMETHOD.NET」では C# で使用できる拡張メソッドが豊富にまとめられています

【C#】XmlNodeList で LINQ の「Select」「Where」「First」「FirstOrDefault」を使用できるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Xml; public static class XmlExt { public static IEnumerable<T> Select<T> ( this XmlNodeList self, Func<XmlNode, T> selector ) { foreach ( XmlNode n in self ) { yield return selector( </xmlnode,></t></t>…

【C#】DateTime が特定の曜日の場合に true を返す拡張メソッド

ソースコード public static class DateTimeExt { public static bool IsMonday( this DateTime self ) { return date.DayOfWeek == DayOfWeek.Monday; } public static bool IsTuesday( this DateTime self ) { return date.DayOfWeek == DayOfWeek.Tuesday…

【C#】明日の DateTime を返す拡張メソッド

ソースコード public static class DateTimeExt { public static DateTime Tomorrow( this DateTime self ) { return value.AddDays( 1 ); } }

【C#】前日の DateTime を返す拡張メソッド

ソースコード public static class DateTimeExt { public static DateTime Yesterday( this DateTime self ) { return value.AddDays( -1 ); } }

【C#】DateTime が指定された期間内の場合に true を返す拡張メソッド

ソースコード public static class DateTimeExt { public static bool IsBetween( this DateTime self, DateTime from, DateTime to ) { return from <= value && to >= value; } }

【C#】XmlAttribute が null ではない場合にのみ Value を返す拡張メソッド

ソースコード using System.Xml; public static class XmlExt { public static string GetValueOrDefault ( this XmlAttribute self, string defaultValue = "" ) { return self != null ? self.Value : defaultValue; } } 使い方 var attr = node.Attribute…

【C#】シーケンスから null の要素を除外する拡張メソッド

ソースコード using System.Collections.Generic; using System.Linq; public static class IEnumerableExt { public static IEnumerable<T> NotNull<T>( this IEnumerable<T> self ) { return self.Where( c => c != null ); } } 使い方 var list = new [] { "フシギ</t></t></t>…

【C#】配列やリストで要素が末尾かどうかを判定できるループ構文の拡張メソッド

ソースコード using System; using System.Collections.Generic; public static class ListExt { public struct ForEachData<T> { private readonly int m_index ; private readonly T m_value ; private readonly bool m_isLast ; public int Index { get { re</t>…

【C#】char 型の数値を int 型に変換する拡張メソッド

ソースコード public static class CharExt { public static int ToInt( this char self ) { return self - '0'; } } 使い方 char ch = '1' int num = ch.ToInt();

【C#】数値を符号付きの文字列に変換する拡張メソッド

ソースコード /// <summary> /// 指定された数値を符号付きの文字列に変換して返します /// </summary> public static string WithSign( this int self ) { return self != 0 ? self.ToString( "+#;-#;" ) : self.ToString(); }

【C#】単数を渡せるIEnumerable.Concat

ソースコード /// <summary> /// 2 つのシーケンスを連結します /// </summary> public static IEnumerable<TSource> Concat<TSource>( this IEnumerable<TSource> first, TSource second ) { return first.Concat( new [] { second } ); }</tsource></tsource></tsource>

【C#】LINQのUnion関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…

【C#】LINQのSequenceEqual関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…

【C#】LINQのIntersect関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…

【C#】LINQのExcept関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…

【C#】LINQのContains関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…

【C#】LINQのDistinct関数の引数にラムダ式を使えるようにする拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtensions { private sealed class CommonSelector<T, TKey> : IEqualityComparer<T> { private Func<T, TKey> m_selector; public CommonSelector( Func<T, TKey> sele</t,></t,></t></t,>…

【C#】配列やリストから重複している要素を抽出する拡張メソッド

ソースコード public static class IListExtensions { /// <summary> /// 重複している要素を抽出して返します /// </summary> public static T[] GetDistinct<T>( this IList<T> self ) { var uniqueList = new List<T>(); var result = new List<T>(); foreach ( var n in self ) { if ( u</t></t></t></t>…

【C#】規定値を指定できるElementAtOrDefault拡張メソッド

ソースコード using System; using System.Collections.Generic; public static class IListExtensions { /// <summary> /// <para>シーケンス内の指定されたインデックス位置にある要素を返します。</para> /// <para>インデックスが範囲外の場合は既定値を返します。</para> /// </summary> public stati…

【C#】指定された文字列を末尾から削除する拡張メソッド

ソースコード public static class StringExtensions { /// <summary> /// <para>指定された文字列がこのインスタンス内で最後に見つかった場合、</para> /// <para>その文字列を削除した新しい文字列を返します</para> /// </summary> public static string RemoveAtLast( this string self, string value…

【C#】UNIX時間を求める拡張メソッド

ソースコード 参考サイト様 UNIX時間を求めるには?[C#、VB] - @IT

【C#】偶数かどうかを返す拡張メソッド

ソースコード public static class IntExtensions { /// <summary> /// 偶数かどうかを返します /// </summary> public static bool IsEven( this int self ) { return self % 2 == 0; } } 使い方 int n1 = 1; int n2 = 2; n1.IsEven(); // False n2.IsEven(); // True

【C#】奇数かどうかを返す拡張メソッド

ソースコード public static class IntExtensions { /// <summary> /// 奇数かどうかを返します /// </summary> public static bool IsOdd( this int self ) { return self % 2 == 1; } } 使い方 int n1 = 1; int n2 = 2; n1.IsOdd(); // True n2.IsOdd(); // False

【C#】文字列の末尾が指定されたいずれかの文字列と一致するかどうかを判断する拡張メソッド

ソースコード using System; using System.Globalization; using System.Linq; public static class StringExtensions { /// <summary> /// <para>この文字列インスタンスの末尾が、</para> /// <para>指定したいずれかの文字列と一致するかどうかを判断します</para> /// </summary> public static bool E…

【C#】Pathクラスの拡張メソッド

ソースコード 使い方 var path = "Assets/Prefabs/Player.prefab"; path.GetDirectoryName(); // Assets/Prefabs path.GetExtension(); // .prefab path.GetFileName(); // Player.prefab path.GetFileNameWithoutExtension(); // Player path.GetFullPath()…

【C#】デリゲートが登録されているかどうかを返す拡張メソッド

ソースコード using System; public static class MulticastDelegateExtensions { public static bool IsNullOrEmpty( this MulticastDelegate self ) { if ( self == null || self.GetInvocationList() == null ) { return true; } return self.GetInvocati…

【Unity】Unity で使える拡張メソッド136個まとめ

はじめに Unity でスマホゲーム開発中に作った拡張メソッドに関する記事を136件まとめました 拡張メソッドに興味がある方はぜひ使用してみて頂ければと思います .NET Framework int ラップアラウンド関数を定義する 数値を加算して、範囲を超えた分は 0 から…