我有下面的C#代碼使用條件運算符?避免如果條件
public Config(SConfig[] c)
{
GpsdIp = c[0].Ip;
GpsdPort = c[0].Port;
CompassIp = c[1]?.Ip;
CompassPort = c[1]?.Port;
}
CompassPort = c[1]?.Port;
被給予警告(red carpet
) 不能implictly轉換int?
到int
。 Explict conversion exists are you missing a cast?
我在這裏的意圖是,如果SConfig[] c
包含一個元素,它應該分配給GpsdIp
和GpsdPort
。如果它包含兩個元素,則第二個元素應該被視爲CompassIp
和CompassPort
。如果可以的話,我真的很想避免和if condition
。
爲什麼你想避免'if'?如果沒有第二個元素,你期望'CompassIp/Port'能保持什麼值? –
下面的答案適合您的目的。只是爲了澄清錯誤的原因。當你使用'c [1] ?. ip''時,你正在爲右手邊變量賦一個整數,但如果它不存在,那麼它將賦值NULL,因爲你的變量沒有準備好。既然你有'int CompassIp'因此這個錯誤。如果你想使用你的原始代碼,你應該有'int? CompassIp「,即CompassIp應該是可爲空的整數,而不僅僅是整數。是的,甚至在你可以用NULL值做任何事情之前,索引異常都會出現在那裏。 –