以下の内容はhttps://rksoftware.hatenablog.com/entry/2024/07/16/220000_1より取得しました。


C# 13 allows ref struct

.NET 9 のプレビュー版で allows ref struct 書けるようになっています。 github.com

パフォーマンスに厳しい用途で使われるライブラリなどで役に立つでしょう。

■ allows ref struct

こんな感じで、Span なんかをジェネリクスで受け入れられるようになります。

var span = "Saitama".AsSpan();
Method1("Saitama"); // これはできる
Method2("Saitama"); // これはできる

Method1(span);  // これはできるようになった
//Method2(span);  // これはできない  CS9244  'ReadOnlySpan<char>' 型は、ジェネリック型またはメソッド 'Method2<T>(T)' のパラメーター 'T' として使用するためには、ref 構造体または ref 構造体を許容する型パラメーターにすることはできません。

static void Method1<T>(T arg)  where T : allows ref struct { }
static void Method2<T>(T arg) { }

■ 試すために

.csproj ファイルを編集する必要があります。

<LangVersion>preview</LangVersion>

を追加します。これを追加しないと次のエラーになります。

CS8652   機能 'ref 構造体制約を許可します' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。

追加した例です。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <LangVersion>preview</LangVersion>
  </PropertyGroup>

</Project>

■ 備えよう

.NET 9。備えよう。




以上の内容はhttps://rksoftware.hatenablog.com/entry/2024/07/16/220000_1より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14