コガネブログ

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

【C#】コマンドライン引数を解析できる「Command Line Parser」紹介

はじめに 「Command Line Parser」をプロジェクトに追加することで コマンドライン引数を解析できるようになります 使い方 Command Line Parser Libraryを使ってコマンドライン引数を解析する1 - DoboWiki Command Line Parser Libraryを使ってコマンドライ…

【C#】指定した年の休日以外のすべての DateTime を取得するサンプル

C#

概要 var start = new DateTime( 2018, 1, 1 ); var list = Enumerable .Range( 0, 365 ) .Select( c => start.AddDays( c ) ) .Where( c => c.DayOfWeek != DayOfWeek.Saturday && c.DayOfWeek != DayOfWeek.Sunday ) .ToArray() ; foreach ( var n in list…

【おすすめスライド】「C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?」

スライド

【C#】Stopwatch で経過時間を読みやすい形式で出力できる拡張メソッド

ソースコード using System; using System.Diagnostics; public static class StopwatchExt { /// <summary> /// yyyy/MM/dd HH:mm:ss 形式の文字列に変換して返します /// </summary> public static string ToPattern( this Stopwatch self ) { return new DateTime( self.Elap…

【C#】クリップボードの文字列に含まれるタブを Alt + F5 でスペースに変換できるツール「TabToSpace」を GitHub に公開しました

概要 クリップボードの文字列に含まれるタブを Alt + F5 でスペースに変換できるツール「TabToSpace」を GitHub に公開しました https://github.com/baba-s/tab-to-space/blob/master/TabToSpace.zip?raw=true 上記の URL からダウンロードした ZIP ファイル…

【C#】指定された文字列に含まれるタブをスペースに変換する関数

C#

ソースコード using System.Text; public static class TabToSpaceConvertor { private static int GetNearestTabStop( int currentPosition, int tabLength ) { if ( currentPosition % tabLength == 1 ) { currentPosition += tabLength; } else { for ( i…

【C#】指定されたフォルダ内の中身を削除する方法

C#

概要 var target = new DirectoryInfo( path ); foreach ( var file in target.GetFiles() ) { file.Delete(); } foreach ( var dir in target.GetDirectories() ) { dir.Delete( true ); } 参考サイト様

【C#】BinaryReader でファイルの末尾に到達したかどうか確認する方法

C#

概要 var reader = new BinaryReader( stream ); var baseStream = reader.BaseStream; while ( baseStream.Position != baseStream.Length ) { var result = reader.ReadByte(); } 上記のようなコードを記述する 参考サイト様

【C#】浮動小数点以下の数値が存在する場合 true を返す拡張メソッド

C#

ソースコード public static class FloatExt { public static bool IsExistAfterDecimalPoint( this float self ) { return self % 1 != 0; } } 使い方 Debug.Log( 1f.IsExistAfterDecimalPoint() ); // False Debug.Log( 1.23f.IsExistAfterDecimalPoint() …

【C#】float 型から浮動小数点以下の数値を取得する拡張メソッド

C#

ソースコード public static class FloatExt { public static float GetAfterDecimalPoint( this float self ) { return self % 1; } } 使い方 Debug.Log( 1f.GetAfterDecimalPoint() ); // 1 Debug.Log( 1.23f.GetAfterDecimalPoint() ); // 0.23 関連記事

【C#】複数行の文字列から空白行またはスペースとタブのみの行を削除する方法

C#

ソースコード using System.Text.RegularExpressions; ... text = Regex.Replace ( text, "^[ \t]*[\r\n]+", string.Empty, RegexOptions.Multiline ); 参考サイト様 http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?ol=200212&tree=c2…

【C#】複数行の文字列から空白行を削除する方法

C#

ソースコード using System.Text.RegularExpressions; ... text = Regex.Replace ( text, "^[\r\n]+", string.Empty, RegexOptions.Multiline ); 参考サイト様 http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?ol=200212&tree=c2615 関…

【C#】CSV の読み書きができる「CsvHelper」紹介

はじめに http://joshclose.github.io/CsvHelper/ 「CsvHelper」をプロジェクトに追加することで CSV の読み書きができるようになります インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージ…

【C#】JSON を整形する関数

C#

はじめに 上記のページで公開されている Json.ToReadable 関数を使用することで、 JSON を整形することができます ソースコード(引用) 使用例 {"foo":111,"bar":222} 例えばこのような JSON を整形したい場合、 var json = @"{""foo"":111,""bar"":222}"; …

【C#】パフォーマンスに優れた列挙型を使用できる「Enums.NET」紹介

はじめに 「Enums.NET」をプロジェクトに追加することで パフォーマンスに優れた列挙型を使用できるようになります インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージの管理」を選択します …

【C#】IOException: Sharing violation on path XXXX

エラー内容 IOException: Sharing violation on path XXXX System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) (at /Users/builduser/builds…

【C#】LINQ で使用できる拡張メソッドが増える「Linq.Extras」紹介

はじめに 「Linq.Extras」をプロジェクトに追加することで LINQ で使用できる拡張メソッドが増えます インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージの管理」を選択します 「参照」タブ…

【C#】LINQ を使用して Excel からデータを抽出できる「LinqToExcel」紹介

はじめに 「LinqToExcel」をプロジェクトに追加することで LINQ を使用して Excel からデータを抽出できるようになります インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージの管理」を選択…

【C#】LINQ で使用できる検索用の拡張メソッドが増える「SearchExtensions」紹介

はじめに 「SearchExtensions」をプロジェクトに追加することで LINQ で使用できる検索用の拡張メソッドが増えます インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージの管理」を選択します …

【C#】DateTime で使用できる拡張メソッドが増える「Exceptionless.DateTimeExtensions」紹介

はじめに 「Exceptionless.DateTimeExtensions」をプロジェクトに追加することで DateTime で使用できる拡張メソッドが増えます インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージの管理」…

【C#】string で使用できる拡張メソッドが増える「String.Extensions」紹介

はじめに 「String.Extensions」をプロジェクトに追加することで string で使用できる拡張メソッドが増えます インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージの管理」を選択します 「参…

【C#】LINQ で使用できる拡張メソッドが増える「ExtraLINQ」紹介

はじめに 「ExtraLINQ」をプロジェクトに追加することで LINQ で使用できる拡張メソッドが増えます インストール Visual Studio メニューの「ツール>NuGet パッケージ マネージャー> ソリューションの NuGet パッケージの管理」を選択します 「参照」タブを…

【C#】フォルダが空かどうか調べる関数

C#

ソースコード using System.IO; public static class DirectoryUtils { public static bool IsEmptyDirectory( string path ) { if ( !Directory.Exists( path ) ) return false; try { var entries = Directory.GetFileSystemEntries( path ); return entri…

【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#】1つ上の階層のフォルダ(ディレクトリ)のパスを取得する方法

C#

ソースコード var path1 = @"C:\Hoge\Fuga"; var path2 = path1.Substring( 0, path1.LastIndexOf( @"\" ) + 1 ); Console.WriteLine( path2 ); // C:\Hoge\

【C#】指定したパスがファイルかフォルダ(ディレクトリ)かを確認する方法

C#

ソースコード using System.IO; ... var path = @"C:\Temp"; var isDirectory = File .GetAttributes( path ) .HasFlag( FileAttributes.Directory ) ; Console.WriteLine( isDirectory ? "フォルダです" : "ファイルです" );

【C#】Dictionary に指定したキーや値が存在するかどうか確認する方法、値を取得する方法

ソースコード using System; using System.Collections.Generic; public static class Program { private static void Main() { var table = new Dictionary<int, string> { { 1 , "フシギダネ" }, { 2 , "フシギソウ" }, { 3 , "フシギバナ" }, { 4 , "ヒトカゲ" }, { 5 </int,>…

【C#】フォルダ(ディレクトリ)の作成、移動、削除、存在するかどうかの確認を行う方法

C#

ソースコード using System.IO; // この一行をソースコードの先頭に記述する public static class Program { private static void Main() { // フォルダを作成(絶対パスで指定) Directory.CreateDirectory( @"D:/temp" ); // フォルダを作成(相対パスで指…