我有以下类:
我现在尝试做的事情(我遇到的问题)是使用以下方式使用
然而,它用以下错误突出显示
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; }
}
那么我有两个SubStredisko
项,其中一个明确为null
。我的目的是有一个单独的方法,对SubStredisko
进行一些处理,例如更改VyplatnaPaska
的值等。以下是它的样子:
private static void VyplatnePasky_Items(ref Stredisko stredisko, XElement myElement)
{
//some logic here
}
我现在尝试做的事情(我遇到的问题)是使用以下方式使用
?:
运算符调用此方法:VyplatnePasky_Items((sPracovisko == null) ? ref sPracovisko_Dohodari : ref sPracovisko,xElement);
然而,它用以下错误突出显示
sPracovisko_Dohodari
和sPracovisko
:语法错误,应为“:”
。
我尝试将它们分别放在括号中,但没有成功。
我做错了什么?
附注:sPracovisko
和sPracovisko_Dohodari
是SubStredisko
类型。
附注2:只是一个快速的想法 - 也许我甚至不需要在这里使用ref
参数?我不太确定在这种情况下是否会创建新对象,还是我将直接更改该特定对象的值(在我的void中)。
VyplatnePasky_Items
方法中,你是否给stredisko
赋了一个新值?如果没有,即使你正在为该 stredisko 的属性分配新值,你也不需要使用 ref。 - Hans KestingsPracovisko
和sPracovisko_Dohodari
都是Stredisko
类型,您现在可以使用C# 7的三元运算符:VyplatnePasky_Items(ref (sPracovisko == null ? ref sPracovisko_Dohodari : ref sPracovisko), xElement)
。然而,更一般的问题是,您说这些类型是SubStredisko
而不是Stredisko
,除非它们匹配确切的类型,否则无法通过引用传递类型。请参见此处以获取解释。 - Glenn Slayden