Interfészekben deklarált statikus absztrakt tagok

A .NET 6 előzetes egy új funkciót kínál, amelyben a static felület tagjai megjelölhetők abstract. Ez a funkció az ECMA 335 specifikáció számos módosításával lehetővé teszi a korábban illegálisnak ítélt köztes nyelv (IL) metaadat-mintáit. További információ: dotnet/runtime#49558.

Régi viselkedés

Ha egy statikus felületet abstract jelöltek meg:

  • A C#-fordító cs0112 hibát generált.
  • Az eszközök és más fordítók illegális IL-metaadatokat generáltak.

Új viselkedés

A .NET 6-tól kezdve a statikus illesztőtagok megjelölhetők és abstract sikeresen lefordíthatók. Emellett a létrehozott IL-metaadat-minták joginak minősülnek az ECMA 335 specifikáció változásai miatt.

Az interfésztagok implementálását static abstract az interfészt megvalósító típusok biztosítják.

Megjegyzés:

A .NET 6 esetében engedélyeznie kell a projekt előzetes verziójú funkcióit, hogy egy felülettagot megjelölhessen.static abstract

Mivel ez egy újonnan legális IL-minta, előfordulhat, hogy a meglévő eszközök helytelenül dolgozzák fel a kapcsolódó metaadatokat, és váratlan viselkedést váltanak ki. Valószínű, hogy az eszközök találkoznak az új metaadat-mintával, mivel a static abstract tagokkal rendelkező felületek most már megjelennek a primitív típusokon, például System.Int32.

Bevezetett verzió

.NET 6

A kompatibilitástörő változás típusa

Ez a változás befolyásolhatja a bináris kompatibilitást.

A változás oka

Ez a módosítás azért lett bevezetve, mert nem volt mód arra, hogy elvonja a statikus tagokat, és általánosított kódot írjon, amely az adott statikus tagokat meghatározó típusokra vonatkozik. Ez különösen problémás volt az olyan tagtípusok esetében, amelyek csak statikus formában léteznek, például operátorok esetében.

Frissítse azokat az eszközöket, amelyek .NET bináris fájlokat vagy C# forráskódot használnak, hogy figyelembe vegyék az interfésztagok új fogalmát static abstract , beleértve azokat is, amelyek most már a .NET primitív típusain léteznek.

Érintett API-k

Nincs adat.

Lásd még