What is the ?[]? syntax in C#?

后端 未结 3 1661
不思量自难忘°
不思量自难忘° 2020-12-13 01:24

While I was studying the delegate which is actually an abstract class in Delegate.cs, I saw the following method in which I don\'t understand

3条回答
  •  无人及你
    2020-12-13 02:11

    Step by step explanation:

    params Delegate?[] delegates - It is an array of nullable Delegate

    params Delegate?[]? delegates - The entire array can be nullable

    Since each parameter is of the type Delegate? and you return an index of the Delegate?[]? array, then it makes sense that the return type is Delegate? otherwise the compiler would return an error as if you were returing and int from a method that returns a string.

    You could change for instance your code to return a Delegate type like this:

    public static Delegate Combine(params Delegate?[]? delegates)
    {
        Delegate defaulDelegate = // someDelegate here
        if (delegates == null || delegates.Length == 0)
            return defaulDelegate;
    
        Delegate d = delegates[0] ?? defaulDelegate;
        for (int i = 1; i < delegates.Length; i++)
            d = Combine(d, delegates[i]);
    
        return d;
    }
    

提交回复
热议问题