liuyanming002 2015-06-15 08:31 采纳率: 60%
浏览 2091
已采纳

C# 求大神解释下面代码

public static string GetSerialPort()
{
return MulGetHardwareInfo(HardwareEnum.Win32_SerialPort, "Name");

    }
    //枚举win32 api
    public enum HardwareEnum
    {

        Win32_SerialPort
            ,
        Win32_SerialPortConfiguration
            ,
        Win32_SerialPortSetting

    }


    public static string MulGetHardwareInfo(HardwareEnum hardType, string propKey)
    {

        string strs = "";
        string ttt = "STMicr";

        ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + hardType);
        var hardInfos = searcher.Get();
        foreach (var hardInfo in hardInfos)
        {
            if (hardInfo.Properties[propKey] != null)
            {
                strs = hardInfo.Properties[propKey].Value.ToString();
                string id = Convert.ToString(strs.Substring(0, 6));
                if (id == ttt)
                {
                    strs = Convert.ToString(strs.Substring(37, 5));
                }
                else 
                {
                    strs = "No Found";                       
                }
            }  
        }
        return strs;
    }
  • 写回答

2条回答 默认 最新

  • Young_Liu 2015-06-15 08:53
    关注

    大概的意思是 从数据库里取出某字段 循环检查值的前6位是不是和STMicr相等,如果等则取某一字段。
    但是这段代码没有实现上述功能,也就是说有bug:
    1、strs.Substring(37, 5) ,没有这种取值方式。
    2、strs = Convert.ToString(strs.Substring(37, 5));取出的字符串只存在临时变量中,下一次循环会把查询结果覆盖,除非hardInfos的元素只有一个,不然该方法返回的总是最后一个元素的相应字段,没有意义

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题