Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如果值为=_C#_If Statement_Windows Mobile_.net 2.0_Smart Device - Fatal编程技术网

C#如果值为=

C#如果值为=,c#,if-statement,windows-mobile,.net-2.0,smart-device,C#,If Statement,Windows Mobile,.net 2.0,Smart Device,我正在从Windows mobile智能设备检索OEM编号,并试图找出如何在if语句中使用返回值 下面是我用来返回值的代码。我想确保OEM编号始终为86.09.0008,如果不是,我想让它告诉我 class oem { const string OEM_VERSION = "OEMVersion"; private const int SPI_GETOEMINFO = 258; private const int MAX_OEM_NAME_LENGTH = 128;

我正在从Windows mobile智能设备检索OEM编号,并试图找出如何在
if
语句中使用返回值

下面是我用来返回值的代码。我想确保OEM编号始终为86.09.0008,如果不是,我想让它告诉我

class oem
{
    const string OEM_VERSION = "OEMVersion";
    private const int SPI_GETOEMINFO = 258;
    private const int MAX_OEM_NAME_LENGTH = 128;
    private const int WCHAR_SIZE = 2;

    [DllImport("coreDLL.dll")]
    public static extern int SystemParametersInfo(int uiAction, int uiParam, string pBuf, int fWinIni);

    [DllImport("CAD.dll")]
    public static extern int CAD_GetOemVersionNumber(ref System.UInt16 lpwMajor, ref System.UInt16 lpwMinor);

    public string getOEMVersion()
    {
        System.UInt16 nMajor = 0;
        System.UInt16 nMinor = 0;
        uint nBuild = 0;

        int status = CAD_GetOemVersionNumber(ref nMajor, ref nMinor);

        if (((System.Convert.ToBoolean(status))))
        {
            string sMajor = String.Format("{0:00}", nMajor); //in 2-digits
            string sMinor = String.Format("{0:00}", nMinor); //in 2-digits
            string sBuild = String.Format("{0:0000}", nBuild); //in 4-digits

            return (sMajor + "." + sMinor + "." + sBuild);
        }
        else // failed
        {
            return ("00.00.0000");
        }
我在我的主要表格中这样称呼:

label1.Text = oemver.getOEMVersion();

好吧,在你的“主要”中做一些类似的事情:


如果我理解你的问题,你应该这样做:

oem someOem = new oem();
if (oem.getOEMVersion() == "86.09.0009") {
     // ok
} else {
     // fail
}

if语句需要bool值。在您的情况下,您应该将您需要的值与您获得的值进行比较

if(status == 86.09.0009)//...
注意双精度“==”是一个检查相等性的运算符。将其与执行赋值的单个“=”进行对比


还要注意,
int
不允许小数。考虑到这个数字有两个小数,我认为您需要将其作为一个字符串。

我不确定您的意思,但如果我理解您的问题,您希望在ifstatement中使用
GetOEMVersion
方法的结果

string OEMVersion = getOEMVersion();
if(OEMVersion == "86.09.0009")
{
   // Do something
}
else
{
   // fail
}
您缺少:

[DllImport("CAD.dll")]
public static extern int CAD_GetOemBuildNumber(ref uint lpdwBuild);


int build = CAD_GetOemBuildNumber(ref nBuild);

获取构建。

抱歉,但你的问题是什么?仅供参考:你的代码从不设置
nBuild
,因此
sBuild
将始终具有值0000。+1为了解释if语句期望什么以及
=
如何工作,我非常接近。别忘了投票给那些帮助你的人,并将其标记为解决方案。我们提供帮助的唯一动机是获得这些分数。为了避免代码中的“幻数”,最好定义类似于
public const string OEM_REQUIRED=“86.09.0008”位于类列表的最顶端。这使得在以后修改代码时,这个数字的用途非常明显。
[DllImport("CAD.dll")]
public static extern int CAD_GetOemBuildNumber(ref uint lpdwBuild);


int build = CAD_GetOemBuildNumber(ref nBuild);