コガネブログ

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

【C#】SelectMany( c => c ) の記述を簡略化する拡張メソッド

ソースコード using System.Collections.Generic; using System.Linq; public static class IEnumerableExt { public static IEnumerable<T> Flatten<T> ( this IEnumerable<IEnumerable<T>> self ) { return self.SelectMany( c => c ); } } 使用例 通常 foreach ( var n in list</ienumerable<t></t></t>…

【C#】Dictionary から最大値や最小値を持つ要素を検索する方法

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

【C#】Dictionary から指定したキーの要素を取得してから削除する拡張メソッド

ソースコード using System.Collections.Generic; public static class DictionaryExt { public static bool Remove<TKey, TValue> ( this Dictionary<TKey, TValue> self, TKey key, out TValue value ) { self.TryGetValue( key, out value ); return self.Remove( key ); } } 使用方法</tkey,></tkey,>…

【C#】Dictionary を結合する方法

目次 目次 foreach で結合する LINQ で結合する(キーが重複する場合は例外) LINQ で結合する(キーが重複しても大丈夫) 参考サイト様 foreach で結合する using System; using System.Collections.Generic; public static class Program { private static…

【C#】読み取り専用の Dictionary を使用する方法

ソースコード using System.Collections.Generic; using System.Collections.ObjectModel; public static class Program { private static void Main() { // 通常の Dictionary var table1 = new Dictionary<int, string> { { 1, "フシギダネ" }, { 2, "フシギソウ" }, { </int,>…

【C#】Dictionary のキーに複数の値を設定する方法

構造体を使用する方法 using System; using System.Collections.Generic; public static class Program { // 構造体でキー用のデータを定義 public struct KeyData { public int m_series; public int m_number; public KeyData( int series, int number ) {…

【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> { { 100, "フシギダネ" }, { 101, "フシギダネ" }, { 102, "フシギダネ" }, { </int,>…

【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 の個人的なお勧め機能(発表時点)」

スライド 参考サイト様