【发布时间】:2025-12-31 00:50:09
【问题描述】:
编辑
这是对我的问题的更好解释。尤其是回答“我为什么要使用引用,为什么不直接使用double?”的问题。
所以我实际上有以下变量:
double? Left_A, Left_B;
double? Right_A, Right_B;
double? Result_Left, Result_Right;
用户要么设置左侧变量的值,要么设置右侧变量的值。它在我的 ViewModel 中处理。我正在计算结果的值,基于
一些公式,如result = a * b 等。
左右变量的公式相同。
所以我只想创建一个像引用变量'a'和'b'这样的“指针”,其值将是Left_A或Left_B的值,这样我就不必执行以下操作:
if(Left_A != null) {
Result_Left = Left_A * Left_B;
} else {
Result_Right = Right_A * Right_B;
}
//There are more such formulas for many use-cases..
我想要这样的东西..
ref double? result, a, b;
a = ref Left_A ?? ref Right_A; //This gives error.
b = ref (Left_B ?? Right_B); //This gives error.
result = Result_Left ?? Result_Right;
result = a * b;
我希望我在这件事上没有做错什么..
我正在尝试将Null-coalescing operator 与ref keyword 一起使用
我的赋值语句如下:
注意:根据我这里省略的业务逻辑,保证 a & b 都不会为空。它们中的任何一个都有一个值。
double? x = a ?? b; // a and b are also of type "double?".
但是,我希望 x 成为引用类型变量。这可能吗?
我尝试了以下方法,但都给出了编译错误。尤其是最后一个:
ref double? x = ref (a ?? b);ref double? x = ref a ?? ref b;ref double? x = (ref a) ?? (ref b);ref double? param1 = ref ( please work!!! -.-' );
有什么想法吗?
【问题讨论】:
-
仍然不清楚你想要什么。为什么要参考?为什么是两个变量?您希望它们如何同时合二为一?对我来说似乎是一个 XY 问题。
-
我希望 x 成为引用类型变量 - 你是什么意思?你真正想要达到什么目标?
-
double? x = a ?? b;有什么问题? -
也许你想使用指针,那么?它们几乎是参考。
-
@OfirWinegarten Pl。检查编辑。
标签: c# operators ref null-coalescing-operator