将C assign / conditional语句转换为C#

时间:2011-03-18 11:49:17

标签: c# c translation

我正在将一些代码从C转换为C#。我不确定如何最好地翻译以下两行:

if (tt = v >> 16)
{
    r = (t = tt >> 8) ? 24 + LT[t] : 16 + LT[tt];
}

tt,v和t是ulongs(与问题无关)。问题是我不认为C#允许在一个语句中进行赋值/条件操作。

在C#中,不能隐式地从ulong转换为bool。以下行也不编译:

if ((bool)(tt = v >> 16))

4 个答案:

答案 0 :(得分:2)

以下是if声明的内容。

(tt = v >> 16) != 0

您无法轻易地将int投射到bool

答案 1 :(得分:2)

这是直接转换:

tt = v >> 16;
if (tt != 0) {
    t = tt >> 8;
    r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}

一般来说,转换为C#时,简洁的C代码看起来不太好。我建议让它变得更加冗长,以便将来生活更轻松。 (称我有偏见,但要比那些使用新语言的人吓唬人们要多得多。)

答案 2 :(得分:1)

试试这个:

tt = v >> 16;
if (tt != 0)

答案 3 :(得分:0)

这个简单的工作:

tt = v >> 16;
if (tt != 0)
{
    t = tt >> 8;
    r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}