Обновить
0

Software Engineer

Отправить сообщение

Проблема заключается в том, что поддержка объединений будет только начиная с версии на которой они вышли. Это потенциально отрезает большую часть аудитории, например движка 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 можно было добавить.

Автор, у вас дублируются параграфы: "Как это связано с Event-based Asynchronous Pattern..."

Не такой уж и умный компилятор

Оказывается, компилятор не смог определить, что имеет дело со строкой из типа входного объекта.

Но вы и не указали тип входного параметра. Вы указали возвращаемый тип — string.
Тип входного параметра указывается так:


let splitPath (inputObject : string) : string =

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Зарегистрирован
Активность