c#?:带参数的运算符

Rob*_* J. 3 c# logical-operators

我有以下课程:

public class SubStredisko
{
    public string Name { get; set; }
    public string Code { get; set; }

    public VyplatnePasky VyplatnaPaska { get; set; }
    public MzdoveNaklady MzdoveNaklady { get; set; }
    public Poistne Poistne { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我有两个SubStredisko项目,其中一个肯定是null.我想要做的是,我有一个单独的方法,它做了一些处理SubStredisko,如更改值VyplatnaPaska等.这是它的样子:

    private static void VyplatnePasky_Items(ref Stredisko stredisko, XElement myElement)
    {
        //some logic here
    }
Run Code Online (Sandbox Code Playgroud)

我现在尝试做的事情(我遇到的问题)是使用?:运算符以下列方式调用此方法:

VyplatnePasky_Items((sPracovisko == null) ? ref sPracovisko_Dohodari : ref sPracovisko,xElement);
Run Code Online (Sandbox Code Playgroud)

但它突出显示sPracovisko_DohodarisPracovisko出现以下错误:Syntax error, ':' expected.

我试着将它们分开放在括号中,但没有运气.我究竟做错了什么?

PS sPracoviskosPracovisko_Dohodari类型SubStredisko.

PS2:快速思考 - 也许我甚至不需要ref参数?我不太确定在这种情况下是否会创建一个新对象,或者我将(在我的空白中)直接更改该特定对象的值.

Guf*_*ffa 5

您不能将表达式用于ref参数.你需要两个电话:

if (sPracovisko == null) {
  VyplatnePasky_Items(ref sPracovisko_Dohodari, xElement);
} else {
  VyplatnePasky_Items(ref sPracovisko, xElement);
}
Run Code Online (Sandbox Code Playgroud)