【发布时间】:2016-04-16 01:35:01
【问题描述】:
我正在尝试将某个代码翻译成 c#。
基本上我了解我正在处理的大部分代码,甚至了解原始代码的意图。 但我想确保我的所有基础都覆盖了。
这是本主题的第 5 篇文章:http://www.pcreview.co.uk/threads/how-to-use-getwindowlong-properly-in-vb-net.1312789/ by 用户 Kresimir
有问题的代码:
Dim ret As Integer = User32DLL.GetWindowLong(Me.Handle, -16)
Dim s As String = String.Empty
If (ret And WS_BORDER) Then s &= "WS_BORDER" & NewLine
我不明白“If (ret And WS_BORDER)”语句应该做什么,以及如何将其翻译成 C#
是吗:
if (ret!=null & WS_BORDER!=null)
还是别的什么?
谢谢。
编辑:注意。如果我使用上面提到的 C# 语句,VS 会通知我“表达式的结果总是错误的,因为“int”类型的值永远不会等于“int”类型的“null”? ^我想我可以忽略它(在我们说话时搜索它),但如果 sm1 希望给我一个“免费解释”,我将不胜感激:*
ps。我真的是一个新手,所以如果我忽略了一些明显的东西,我很抱歉。
【问题讨论】:
-
按位和
-
运算符 & 不能应用于 "int" 和 "bool" 类型的操作数 也尝试了 "ret & WS_BORDER != null"。
-
抱歉,括号在这里很重要。错过了。请参阅古斯曼的回答。
-
嗯,要清楚,它总是两个操作。我的错误只是
!=的优先级高于&,这是我没有考虑过的。 -
VB.Net - And Operator 似乎很好地解释了正在发生的事情。您能否澄清一下您没有从 MSDN 文章中得到什么?
标签: c# vb.net if-statement translate