将 C 赋值/条件语句转换为 C#
我正在将一些代码从 C 翻译为 C#。我不确定如何最好地翻译以下两行:
if (tt = v >> 16)
{
r = (t = tt >> 8) ? 24 + LT[t] : 16 + LT[tt];
}
tt、v 和 t 是 ulong(与问题无关)。问题是我认为 C# 不允许在一个语句中进行赋值/条件操作。
在 C# 中,无法从 ulong 隐式转换为 bool。以下行也无法编译:
if ((bool)(tt = v >> 16))
I am translating some code from C to C#. I'm not sure how best to translate the following 2 lines:
if (tt = v >> 16)
{
r = (t = tt >> 8) ? 24 + LT[t] : 16 + LT[tt];
}
tt, v, and t are ulongs (not really relevant to the problem). The problem is I don't think C# allows the assign/conditional operation in one statement.
In C#, one cannot implicitly convert from ulong to bool. The following line doesn't compile either:
if ((bool)(tt = v >> 16))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是您的
if
语句。您无法轻松地将
int
转换为bool
。Here is the one for your
if
statement.You cant easily cast an
int
to abool
.这是直接转换:
一般来说,简洁的 C 代码转换为 C# 时看起来不太好。我建议让它更详细一些,以便将来的生活更轻松。 (可以说我有偏见,但与使用较新语言的人相比,使用 C 语言的人更需要害怕)。
This is a direct conversion:
Generally speaking, terse C code doesn't look good when converted to C#. I suggest making it a little bit more verbose to make life easier in the future. (Call me biased, but it takes a lot more to frighten people used to C than those using newer languages).
试试这个:
Try this:
这应该很简单:
This shoud simply work: