Closed CaptainFamicon closed 1 year ago
https://ufcpp.net/study/csharp/datatype/inline-array/#inline-array-attribute
構造体のサイズなので、typeof(T) ではなく sizeof(T) かと思われます。 T は参照型を含む可能性があるので System.Runtime.CompilerServices.Unsafe.SizeOf<T>() と書くとニヤリとしそうですが、それは野暮というもの・・・
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; }
今、書けますよ(野暮に野暮返す)。
unsafe { var s = sizeof(string); // C# 11 移行、警告のみ }
直します…
修正。
https://ufcpp.net/study/csharp/datatype/inline-array/#inline-array-attribute
構造体のサイズなので、
typeof(T)
ではなくsizeof(T)
かと思われます。T
は参照型を含む可能性があるのでSystem.Runtime.CompilerServices.Unsafe.SizeOf<T>()
と書くとニヤリとしそうですが、それは野暮というもの・・・