Проблема заключается в том, что поддержка объединений будет только начиная с версии на которой они вышли. Это потенциально отрезает большую часть аудитории, например движка Unity (который до сих пор на .netstandart 2.1) или многих библиотек, которые поддерживают старые рантаймы.
Это не так. Это фича языка, а не рантайма. Вот прямо сейчас я проверил, на netstandard2.1 билдится при установленном .NET SDK 11 Preview.
#:property TargetFramework=netstandard2.1
#:property PublishAot=false
#:property LangVersion=preview
Pet pet = new Cat("Whiskers");
Console.WriteLine(pet switch
{
Cat c => $"Cat: {c.Name}",
Dog d => $"Dog: {d.Name}",
});
public record class Cat(string Name);
public record class Dog(string Name);
public union Pet(Cat, Dog);
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct,
AllowMultiple = false)]
public sealed class UnionAttribute : Attribute;
public sealed class IsExternalInit : Attribute;
public interface IUnion
{
object? Value { get; }
}
}
Про Multicast Delegates можно было добавить и то, что возвращаемым значением будет результат выполнения последнего делегата. И про GetInvocationList можно было добавить.
Это не так. Это фича языка, а не рантайма. Вот прямо сейчас я проверил, на netstandard2.1 билдится при установленном .NET SDK 11 Preview.
Про Multicast Delegates можно было добавить и то, что возвращаемым значением будет результат выполнения последнего делегата. И про GetInvocationList можно было добавить.
Автор, у вас дублируются параграфы: "Как это связано с Event-based Asynchronous Pattern..."
Но вы и не указали тип входного параметра. Вы указали возвращаемый тип — string.
Тип входного параметра указывается так:
let splitPath (inputObject : string) : string =