コガネブログ

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

【C#】Dictionary を逆順に参照する方法

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

【C#】IEnumerable からランダムに値を取得する拡張メソッド

ソースコード System.Random 版 using System; using System.Collections.Generic; using System.Linq; public static partial class IEnumerableExt { private static readonly Random m_random = new Random(); public static T RandomAt<T>( this IEnumerable<T></t></t>…

【C#】Dictionary で値からキーを取得する方法

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

【C#】登録順を取得できる Dictionary

ソースコード using System; using System.Collections; using System.Collections.Specialized; public static class Program { private static void Main() { // OrderedDictionary を使用すると登録順を取得できます var table = new OrderedDictionary {…

【C#】Dictionary をソートする方法

方法1 - SortedDictionary を使用する using System; using System.Collections.Generic; public static class Program { private static void Main() { var table = new SortedDictionary<int, string> { { 3, "フシギバナ" }, { 2, "フシギソウ" }, { 1, "フシギダネ" }</int,>…

【C#】Dictionary の最初の要素を取得する方法

方法 FirstOrDefault 関数を使用 using System; using System.Collections.Generic; using System.Linq; public static class Program { private static void Main() { var table = new Dictionary<int, string> { { 1, "フシギダネ" }, { 2, "フシギソウ" }, { 3, "フシ</int,>…

【C#】Dictionary のキーで文字列の大文字と小文字を区別しない方法

ソースコード using System; using System.Collections.Generic; public static class Program { private static void Main() { // デフォルトでは大文字と小文字は区別される var table1 = new Dictionary<string, int>(); table1.Add( "sample", 1 ); table1.Add( "Samp</string,>…

【C#】Dictionary を foreach で参照する方法

ソースコード using System; using System.Collections.Generic; public static class Program { private static void Main() { var table = new Dictionary<int, string> { { 1, "フシギダネ" }, { 2, "フシギソウ" }, { 3, "フシギバナ" }, }; // キーと値を同時に参照</int,>…

【C#】Dictionary から要素を削除する方法

ソースコード using System.Collections.Generic; public static class Program { private static void Main() { var table = new Dictionary<int, string> { { 1, "フシギダネ" }, { 2, "フシギソウ" }, { 3, "フシギバナ" }, }; // 指定されたキーの要素を削除する tabl</int,>…

【C#】Dictionary を初期化する方法

メンバ変数の場合 using System.Collections.Generic; public class Program { // コレクション初期化子を使用する方法 その1 public Dictionary<int, string> m_table1 = new Dictionary<int, string> { { 1, "フシギダネ" }, { 2, "フシギソウ" }, { 3, "フシギバナ" }, }; // コレク</int,></int,>…

【C#】Dictionary のキーや値を配列やリストに変換する方法

ソースコード using System.Collections.Generic; using System.Linq; public static class Program { private static void Main() { var table = new Dictionary<int, string> { { 1, "フシギダネ" }, { 2, "フシギソウ" }, { 3, "フシギバナ" }, }; // キーの配列に変換</int,>…

【おすすめスライド】「CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する」

スライド

【C#】高速な LINQ を使用できる「LinqFaster」紹介

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

【C#】Dictionary を foreach で使う時の記述を簡略化する Deconstruction

ソースコード using System.Collections.Generic; public static class KeyValuePairExt { public static void Deconstruct<TKey, TValue> ( this KeyValuePair<TKey, TValue> self, out TKey key, out TValue value ) { key = self.Key; value = self.Value; } } 使用例 通常 foreach ( </tkey,></tkey,>…

【C#】DateTime を代入する時の記述を簡略化する Deconstruction

ソースコード using System; public static class DateTimeExt { public static void Deconstruct ( this DateTime self, out int year, out int month, out int day ) { year = self.Year; month = self.Month; day = self.Day; } } 使用例 通常 var dt = D…

【C#】null 許容型を代入する時の記述を簡略化する Deconstruction

ソースコード public static class NullableExt { public static void Deconstruct<T> ( this T? self, out bool hasValue, out T value ) where T : struct { hasValue = self.HasValue; value = self ?? default; } } 使用例 var now = DateTime.Now; var ( h</t>…

【C#】ファイルの一覧を取得する Directory.GetFiles と Directory.EnumerateFiles の比較

C#

概要 using System; using System.Diagnostics; using System.IO; class Program { static void Main() { var path = "【対象のフォルダ】"; var pattern = "【検索パターン】"; var option = SearchOption.AllDirectories; var sw1 = new Stopwatch(); sw1.…

【C#】文字列がすべて小文字かどうかを判定する拡張メソッド

ソースコード public static class StringExt { public static bool IsLower( this string self ) { for ( int i = 0; i < self.Length; i++ ) { if ( char.IsUpper( self[ i ] ) ) { return false; } } return true; } } 使い方 var str = "abcde"; var isL…

【C#】文字列がすべて大文字かどうかを判定する拡張メソッド

ソースコード public static class StringExt { public static bool IsUpper( this string self ) { for ( int i = 0; i < self.Length; i++ ) { if ( char.IsLower( self[ i ] ) ) { return false; } } return true; } } 使い方 var str = "ABCDE"; var isU…

【おすすめスライド】「C#8.0という未来を垣間見る話」

23:00# スライド

【おすすめスライド】「今、Unityプログラマに教えて上げたいC#のあれやこれや」

スライド

【おすすめスライド】「Unityで使える C# 6.0~と .NET 4.6」

スライド

【おすすめスライド】「Visual Studio 2019 の個人的なお勧め機能(発表時点)」

スライド 参考サイト様

【C#】string から一行目だけ取得する拡張メソッド

ソースコード using System; using System.Linq; public static class StringExt { public static string GetFirstLine( this string self ) { var separator = new [] { Environment.NewLine }; return self .Split( separator, StringSplitOptions.None ) …

【C#】指定されたバイト数で文字列を分割して返す拡張メソッド

ソースコード using System.Collections.Generic; using System.Text; public static class StringExt { /// <summary> /// 指定されたバイト数で文字列を分割して返します /// </summary> public static IList<string> SplitByMultiByte( this string self, int count ) { var result =</string>…

【C#】.NET アセンブリを逆コンパイルできる「dotPeek」紹介

C#

はじめに 「dotPeek」を使用すると .NET アセンブリを逆コンパイルできるようになります 入手方法 上記のページで「GET DOTPEEK」を選択することで入手できます 使い方 .dll ファイルをドラッグ&ドロップすることで、その .dll を逆コンパイルできます

【C#】容量を表すバイト単位の数値を単位付きの読みやすい文字列に変換する関数

ソースコード public static class FileUtils { public static string ToReadableSize( double size, int scale = 0, int standard = 1024 ) { var unit = new[] { "B", "KB", "MB", "GB" }; if ( scale == unit.Length - 1 || size <= standard ) { return …

【C#】System.IO.FileNotFoundException: ファイルまたはアセンブリ 'System.Threading.Tasks.Dataflow, Version=4.5.24.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、またはその 依存関係の 1 つが読み込めませんでした

C#

概要 System.IO.FileNotFoundException: ファイルまたはアセンブリ 'System.Threading.Tasks.Dataflow, Version=4.5.24.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、 またはその 依存関係の 1 つが読み込めませんでした。 指定されたファイルが…

【C#】the current .NET SDK does not support targeting .NET Core XXXX

C#

概要 the current .NET SDK does not support targeting .NET Core XXXX Visual Studio でソリューションをビルドしようとしたところ、上記のエラーが発生した https://dotnet.microsoft.com/download/visual-studio-sdks 上記のサイトから該当する SDK をイ…

【C#】指定された日付が週の最終営業日の場合 true を返すクラス

C#

ソースコード 使い方 var path = @"syukujitsu_kyujitsu.csv"; var now = DateTime.Now; LastBusinessDayOfWeekChecker.Load( path ); var isLast = LastBusinessDayOfWeekChecker.IsLast( now ); 補足 CsvHelper を使用しています(https://joshclose.githu…