public string Source
{
    get
    {
        /*
        if ( Source == null ){
            return string . Empty;
        } else {
            return Source;
        }
        */
        return Source ?? string.Empty;
    }
    set
    {
        /*
        if ( Source == null ) {
            Source = string . Empty;
        } else {
            if ( Source == value ) {
                Source = Source;
            } else {
                Source = value;
            }
        }
        */
        Source == value ? Source : value ?? string.Empty;
        RaisePropertyChanged ( "Source" );
    }
}

我可以用吗?: ??运营商EXACTLY如如果/否则?


My Question :
如何用 ?: ?? 编写以下内容

[ 1 ]

if ( Source == null ){
    // Return Nothing
} else {
    return Source;
}

[ 2 ]

if ( Source == value ){
    // Do Nothing
} else {
    Source = value;
    RaisePropertyChanged ( "Source" );
} 

Briefly :如何不执行任何操作、不返回任何内容并执行多个指令?: ??操作员?

答案

对于 [1],您不能:这些运算符用于返回值,而不是执行操作。

表达方式

a ? b : c

评估为b如果a为真,计算结果为c如果a是假的。

表达方式

b ?? c

评估为b如果b不为空且计算结果为c如果b一片空白。

如果你写

return a ? b : c;

或者

return b ?? c;

他们会总是返回一些东西。

对于[2],您可以编写一个返回执行"多个操作"的正确值的函数,但这可能比仅仅使用更糟糕if/else

来自: stackoverflow.com