小编Mat*_*asd的帖子

操作员 '?' 初始化时不能应用

我的方法ApplyDo我用来变换或计算表达式。在以下示例中,它们在泛型上下文中使用,泛型类型可以是值或引用。编译器允许某些用法,而其他用法则被视为错误。失败和非失败示例的代码类似,只是失败示例是变量初始化。

    public static U Apply<T, U>(this T subject, Func<T, U> f) => f(subject);

    public static void Do<T>(this T subject, Action<T> action) => action(subject);

    public static void SomeMethodA<A>(A a = default(A))
    {
        // OK: apply some operation to 'a'.
        a?.Apply(_ => default(A));

        // OK: apply some operation to 'a' and 'Do' assign result to 'b'.
        A b = default(A);
        a?.Apply(x => x).Do(x => b = x);
        a?.Apply(x => x)?.Do(x => b = x);

        // Bad: apply some …
Run Code Online (Sandbox Code Playgroud)

c# generics compiler-errors

3
推荐指数
1
解决办法
102
查看次数

标签 统计

c# ×1

compiler-errors ×1

generics ×1