[英]c# ?: Operator with ref parameter
我有以下課程:
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
。
我試着將它們分開放在括號中,但沒有運氣。 我究竟做錯了什么?
PS sPracovisko
和sPracovisko_Dohodari
屬於SubStredisko
類型。
PS2:快速思考 - 也許我甚至不需要這里的ref
參數? 我不太確定在這種情況下是否會創建一個新對象,或者我將(在我的空白中)直接更改該特定對象的值。
您不能將表達式用於ref
參數。 你需要兩個電話:
if (sPracovisko == null) {
VyplatnePasky_Items(ref sPracovisko_Dohodari, xElement);
} else {
VyplatnePasky_Items(ref sPracovisko, xElement);
}
ref
參數必須是變量 。 它不能像你想要的那樣是一個三元表達。 你可以這樣做:
var inputParameter = sPracovisko == null ? sPracovisko_Dohodari : sPracovisko;
VyplatnePasky_Items(ref inputParameter, xElement);
請注意,使用上面的代碼,更改將反映在inputParamter
,並且不會影響其他兩個變量。 如果你想改變變量本身,那就去@Guffa的回答吧。
試試這個
VyplatnePasky_Items(((sPracovisko == null) ? ref sPracovisko_Dohodari : sPracovisko),xElement);
要么
VyplatnePasky_Items(((sPracovisko == null) ? ref sPracovisko_Dohodari : sPracovisko) out,xElement);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.