我有以下课程:
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
并出现以下错误:Syntax error, ':' expected
。
我试图将它们分开放在括号中,但没有运气。 我做错了什么?
P.S。 sPracovisko
和sPracovisko_Dohodari
的类型为SubStredisko
。
P.S.2:快速思考 - 也许我甚至不需要ref
参数在这里?我不太确定在这种情况下是否会创建一个新对象,或者我将(在我的空白中)直接更改该特定对象的值。
答案 0 :(得分:5)
您无法使用ref
参数的表达式。你需要两个电话:
if (sPracovisko == null) {
VyplatnePasky_Items(ref sPracovisko_Dohodari, xElement);
} else {
VyplatnePasky_Items(ref sPracovisko, xElement);
}
答案 1 :(得分:2)
ref
参数必须是变量。它不能像你想要的那样是一个三元表达。你可以这样做:
var inputParameter = sPracovisko == null ? sPracovisko_Dohodari : sPracovisko;
VyplatnePasky_Items(ref inputParameter, xElement);
请注意,使用上面的代码,更改将反映在inputParamter
上,并且不会影响其他两个变量。如果你想改变变量本身,那就去@Guffa的回答。
答案 2 :(得分:0)
试试这个
VyplatnePasky_Items(((sPracovisko == null) ? ref sPracovisko_Dohodari : sPracovisko),xElement);
或
VyplatnePasky_Items(((sPracovisko == null) ? ref sPracovisko_Dohodari : sPracovisko) out,xElement);