chevron_left

メインカテゴリーを選択しなおす

cancel
はなちる
フォロー
住所
未設定
出身
未設定
ブログ村参加

2020/03/05

arrow_drop_down
  • 【C#】.NET7より導入されたInt128 構造体とUInt128 構造体を用いて128ビット整数を活用する

    はじめに 今回は128ビット整数のInt128とUInt128について取り上げたいと思います。learn.microsoft.com learn.microsoft.com はじめに 概要 概要 128bitの整数(Int128・UInt128)が.NET7から導入されました。C#のバージョン的にはC# 11からのタイミングなはずです。 C# 言語のバージョン管理 - C# ガイド - C# Microsoft Learn Int128 maxInt128 = Int128.MaxValue; Int128 minInt128 = Int128.MinValue; // 170141183…

  • 【C#】C#11から登場した生文字列リテラル(Raw String Literal)を利用してT4のデザイン時テンプレートを脱却する

    はじめに 今回はC#11より登場した生文字列リテラル(Raw String Literal)を紹介したいと思います。 // サンプル public static void Main() { var name = "Hanachiru"; // C#11より登場した生文字列リテラル (T4の実行時テンプレートの移行先としてしばしば利用される) var sampleClass = $$""" public class SampleClass { public static void SampleMethod() { Console.WriteLine("Hello, {{name}}!"); } …

  • 【C#】メモリレイアウトを制御できるStructLayout &LayoutKind.Explicitを用いて別の型として解釈する(あとUnsafe.Asを利用した例も)

    はじめに 今回はStructLayoutとLayoutKind.Explicitを用いて指定したメモリ領域を別の型として解釈する方法について紹介したいと思います。 別の型として解釈する例(bool + byte + ushort => int) はじめに 別の型として解釈する StructLayoutとは Unsafe.As 参考 別の型として解釈する StructLayoutAttributeとLayoutKind.Explicitを上手に組み合わせることで、本来はキャストできないような別な型として解釈させることができます。 // サンプル : bool(1byte) + byte(1byt…

  • 【Unity】Unity Package Manager(UPM)が認識する自作Packageを作成し、git経由でインストールできるまで整える

    はじめに 今回は自作パッケージを作成しPackageManagerのAdd package from git URLからインストールできるようにする手法について紹介したいと思います。 実際にインストールしている様子 はじめに カスタムパッケージの作成 ファイル・フォルダを生成する 中身を記述する package.json [company-name].[package-name].asmdef [company-name].[package-name].Editor.asmdef Package Managerから確認する Add package from git URLからインストールできる…

  • 【C#】オープンジェネリック型(Open Generic Types)とクローズジェネリック型(Closed Generic Types)の違いについて

    はじめに 今回はオープンジェネリック型(Open Generic Types)とクローズジェネリック型(Closed Generic Types)について取り上げたいと思います。 はじめに 概要 オープンジェネリック型 クローズジェネリック型 参考 概要 オープンジェネリック型(Open Generic Types):型パラメーターに具体的な型を定めていないジェネリック クローズジェネリック型(Closed Generic Types):型パラメーターに具体的な型を定めたジェネリック インスタンス化できるのがクローズジェネリク型で、できないのがオープンジェネリック型と考えても良いかもしれません…

  • 【C#】ジェネリック型を構築するジェネリック型定義を取得・判定する(GetGenericTypeDefinition(), IsGenericTypeDefinition)

    はじめに 今回はジェネリック型を構築するジェネリック型定義を取得・判定する方法について紹介したいと思います。 System.Collections.Generic.Dictionary`2[System.String,System.Int32] Dictionary<string, int> ↓ // ジェネリック型定義 System.Collections.Generic.Dictionary`2[TKey,TValue] Dictionary<TKey, TValue> はじめに 概要 やり方 概要 元になるジェネリック型定義を取得するにはType.GetGenericTypeDefini…

  • 【C#】C#11より実装されたUTF-8文字列リテラルを用いてUTF-8のbyte配列を生成する

    はじめに 今回はC#11より実装されたUTF-8文字列リテラルを紹介したいと思います。 // サンプル ReadOnlySpan<byte> span = "Hello"u8; var builder = new StringBuilder(); foreach (var c in span) { builder.Append(c.ToString("x")); builder.Append(", "); } // 出力 : 48, 65, 6c, 6c, 6f, // UTF-16 : 48, 00, 65, 00, 6C, 00, 6C, 00, 6F, 00 // UTF-8 : 48,…

  • 【Rider】InlineErrorという拡張機能を入れて警告やエラーメッセージをコードの右側に表示させる(常に表示されるので便利)

    はじめに 今回はInlineErrorというRiderの拡張機能について紹介したいと思います。 実装に動作させている様子plugins.jetbrains.com はじめに 概要 インストール手順 概要 InlineErrorというRider拡張機能を利用することで、警告やエラーのメッセージをコードの右側に表示させることができます。 Plugin for displaying errors message in the editor; inspired by Alexander's VSCode extension Error Lens // DeepL翻訳 エラーメッセージをエディターに表示…

  • 【C#】System.Diagnostics.ConditionalAttributeは「戻り値・outがあるとNG」で「ref・inはOK」である

    はじめに 今回はConditionalAttributeの制約について紹介をしたいと思います。 指定した条件付きコンパイル シンボルが定義されていない場合、メソッド呼び出しまたは属性を無視するようコンパイラに指示します。 learn.microsoft.com最近知ったのですが、以下のケースではConditionalAttributeは利用できないみたいです。 戻り値がある場合 引数にoutパラメーター修飾子がある場合 具体例を見ながら紹介します。 はじめに 制約 戻り値があるとき outパラメーター修飾子があるとき ref・inパラメーター修飾子はOK 理由 参考 制約 戻り値があるとき 戻…

  • 【C#】TypeConverter.ConvertFromStringメソッドを用いてstringからgenericな型にParseでき、C#11からはIParsable<TSelf>が使える

    はじめに 今回はTypeConverter.ConvertFromStringとC#11から導入されたIParsable<TSelf>を紹介したいと思います。learn.microsoft.comlearn.microsoft.com はじめに 概要 C#11以前 C#11以降 パフォーマンス的な話 概要 例えばstringからジェネリックのTの値にパースしたいとします。 public static bool TryParse<T>(string value, out T result) { // TODO: valueからresultにParseをする } ぱっと見型スイッチで頑張るみたいな…

  • 【Rider】nullになることを示す[CanBeNull]・ならないことを示す[NotNull] と 値解析モードによる挙動の違いについて

    はじめに 今回は[CanBeNull]と[NotNull]、またそれらに対する挙動を設定できる値解析モードについて取り上げたいと思います。pleiades.io // 値解析モードによる挙動の違いについてのサンプル var sample = new Sample(canBeNullObj: null, notNullObj: null, obj: null); // 値解析モードが楽観的・悲観的のどちらでも警告が出てくる var canBeNullObj = sample.CanBeNullObj; _ = canBeNullObj.ToString(); // 値解析モードが楽観的・悲観的の…

  • 【C#】インターフェースで定義されているメンバーを実装するときにConditional属性は使えない

    はじめに 以下のようなコードを書いたところエラーが出てきてしまいました。 public interface IProgram { public void Hoge(); } public class Program : IProgram { [Conditional("ENABLE_HOGE")] public void Hoge() { Console.WriteLine("HOGE"); } } [CS0629] 条件付きメンバー 'Program.Hoge()' はインターフェイス メンバー 'IProgram.Hoge()' を型 'Program' で実装できません このエラーについ…

  • 【Unity】コマンドラインからUnityをバッチモードで実行しstaticメソッドを実行する方法

    はじめに 今回はコマンドラインからUnityを操作する方法について紹介したいと思います。 コマンドラインから実行している様子docs.unity3d.com はじめに 概要 コマンドについて Unityのパスを指定 -quit -batchmode -nographics -projectPath -executeMethod -buildTarget -logFile 引数の渡し方 概要 Unityはコマンドラインから実行することができます。 Unity をコマンドラインで実行できます (macOS では ターミナル、Windows では コマンドプロンプト)。 コマンドライン引数 - Un…

arrow_drop_down

ブログリーダー」を活用して、はなちるさんをフォローしませんか?

ハンドル名
はなちるさん
ブログタイトル
はなちるのマイノート
フォロー
はなちるのマイノート

にほんブログ村 カテゴリー一覧

商用