ufcpp/UfcppSample

「[雑記] InlineArray」ページの記述の修正( `typeof(T)` -> `sizeof(T)`)

Closed this issue · 2 comments

https://ufcpp.net/study/csharp/datatype/inline-array/#inline-array-attribute

構造体のサイズなので、typeof(T) ではなく sizeof(T) かと思われます。
T は参照型を含む可能性があるので System.Runtime.CompilerServices.Unsafe.SizeOf<T>() と書くとニヤリとしそうですが、それは野暮というもの・・・

using System.Runtime.CompilerServices;

// この属性を付けると、 .NET ランタイムが特別扱いして、構造体のサイズを拡大する。
// (コンストラクター引数で Length 指定。)
[InlineArray(3)]
struct FixedBuffer<T>
{
    // フィールドを1個だけ書く。
    // (2個以上書くとコンパイル エラーになる。)
    // 構造体のサイズが typeof(T) × Length になる。      <<<----- ここ --------
    private T _value;
}
ufcpp commented

今、書けますよ(野暮に野暮返す)。

unsafe
{
    var s = sizeof(string); // C# 11 移行、警告のみ
}

直します…

ufcpp commented

修正。