Wersja i zaktualizuj uwagi dla deweloperów języka C#Version and update considerations for C# developers

Zgodność jest bardzo ważne cel w miarę dodawania nowych funkcji języka C#.Compatibility is a very important goal as new features are added to the C# language. Prawie we wszystkich przypadkach istniejący kod może ponownie kompilowana do nowej wersji kompilatora bez żadnych problemu.In almost all cases, existing code can be recompiled with a new compiler version without any issue.

Ostrożnie mogą być wymagane, gdy przyjmują nowe funkcje języka w bibliotece.More care may be required when you adopt new language features in a library. Jego przy użyciu funkcji, które znajdują się w najnowszej wersji tworzy nową bibliotekę i należy do zagwarantowania, że aplikacje utworzone przy użyciu poprzedniej wersji kompilatora może być użyty.You may be creating a new library with features found in the latest version and need to ensure apps built using previous versions of the compiler can use it. Lub może być uaktualniania istniejącej biblioteki i wielu użytkowników może nie uaktualniono wersje jeszcze.Or you may be upgrading an existing library and many of your users may not have upgraded versions yet. Przy podejmowaniu decyzji o przyjęcie nowych funkcji, należy wziąć pod uwagę dwie odmiany zgodność: źródłowy zgodny i zgodne dane binarne.As you make decisions on adopting new features, you'll need to consider two variations of compatibility: source compatible and binary compatible.

Binarny zmiany zgodneBinary compatible changes

Zmiany w bibliotece są zgodne dane binarne gdy zaktualizowano biblioteki mogą być używane w taki sposób, bez ponowne tworzenie aplikacji i bibliotek, które go używają.Changes to your library are binary compatible when your updated library can be used without rebuilding applications and libraries that use it. Zależne zestawy nie są wymagane do można odbudować ani nie są wymagane zmiany kodu źródłowego.Dependent assemblies are not required to be rebuilt, nor are any source code changes required. Binarny zgodne nie są zgodne zmiany źródła.Binary compatible changes are also source compatible changes.

Zmiany zgodne źródłoSource compatible changes

Zmiany w bibliotece są zgodne źródło po aplikacji i bibliotek, korzystających z biblioteki nie wymagają zmiany kodu źródłowego, ale źródło powodującej względem nowej wersji, aby działać poprawnie.Changes to your library are source compatible when applications and libraries that use your library do not require source code changes, but the source must be recompiled against the new version to work correctly.

Niezgodne zmianyIncompatible changes

Jeśli zmiany nie jest ani zgodne źródło ani zgodne dane binarne, zmiany kodu źródłowego oraz ponownej kompilacji są wymagane w aplikacjach i zależne biblioteki.If a change is neither source compatible nor binary compatible, source code changes along with recompilation are required in dependent libraries and applications.

Oceń bibliotekiEvaluate your library

Te pojęcia zgodności wpływają na deklaracje publiczne i chronione, biblioteki, a nie wewnętrzną implementację.These compatibility concepts affect the public and protected declarations for your library, not its internal implementation. Wewnętrznie przyjęcie żadnych nowych funkcji są zawsze zgodne dane binarne.Adopting any new features internally are always binary compatible.

Binarny zgodnego zmiany Podaj nową składnię, która generuje ten sam kod skompilowany dla deklaracji na publiczny jako starsza składnia.Binary compatible changes provide new syntax that generates the same compiled code for public declarations as the older syntax. Na przykład zmiana metody do elementu członkowskiego z wyrażeniem w treści jest zgodne dane binarne zmiany:For example, changing a method to an expression-bodied member is a binary compatible change:

Oryginalny kod:Original code:

public double CalculateSquare(double value)
{
    return value * value;
}

Nowy kod:New code:

public double CalculateSquare(double value) => value * value;

Zgodne źródło zmiany wprowadzają składnia, która zmienia kod skompilowany członka publicznego, ale w sposób zgodny z istniejących witryn wywołania.Source compatible changes introduce syntax that changes the compiled code for a public member, but in a way that is compatible with existing call sites. Na przykład zmiana sygnatury metody z przez wartość parametru, aby in przez odwołanie parametr jest zgodne, źródła, ale nie binarne zgodnych:For example, changing a method signature from a by value parameter to an in by reference parameter is source compatible, but not binary compatible:

Oryginalny kod:Original code:

public double CalculateSquare(double value) => value * value;

Nowy kod:New code:

public double CalculateSquare(in double value) => value * value;

What's new artykułów należy pamiętać, jeśli wprowadzenie do funkcji, który wpływa na publicznego deklaracje zgodnego źródła lub zgodne dane binarne.The What's new articles note if introducing a feature that affects public declarations is source compatible or binary compatible.