C#中的开关/案例情况下循环-如何? - c#

我正在尝试使用c#扩展给定的代码,但是由于缺乏编程经验,我有点陷入困境。

使用Visual Studio社区,我试图通过控制台读取CPU核心温度。该代码使用开关/外壳来查找传感器特定名称的外壳,例如CPU Core#1和温度。对于每个CPU内核。拥有64个核心,这是相当不错的选择。我试图实现一个foreach情况,但是它不起作用。我也不知道如何在这里设置for循环。

那是有问题的代码:

if (s.SensorType == LibreHardwareMonitor.Hardware.SensorType.Temperature)
{
    if (s.Value != null)
    {
        float curTemp = (float)s.Value;
        switch (s.Name)
        {
            case "Core Average": //average temps
                cpuTemp = curTemp.ToString();
                Console.WriteLine(" ... ");
                Console.WriteLine(" CPU AVG TEMP: " + cpuTemp);
                Console.WriteLine(" ... ");
                break;

            case "CPU Core #": //Temps for CPU Core #1, CPU Core #2 ...
                foreach (s.Name in LibreHardwareMonitor...? ) // <-- no clue what to do here
                {
                    int i = 1;
                    cpuTemp = curTemp.ToString();
                    Console.WriteLine(" ... ");
                    Console.WriteLine(" CPU #" + i +" TEMP: " + cpuTemp);
                    Console.WriteLine(" ... ");
                    i++;
                }                    
                break;
        }
    }
}

我被困住了,不知道如何实现将所有CPU Core#1吐出到CPU Core#64临时。

这是完整的代码:

private void dataCheck(object StateObj)
{
    string cpuTempA = ""; 
    string cpuTemp = "";
    string gpuTemp = "";
    string gpuLoad = "";
    string cpuLoad = "";
    string dataUsed = "";
    string fanUsed = "";
    string cpuClock = "";
    //;
    StateObjClass State = (StateObjClass)StateObj;
    // enumerating all the hardware
    foreach (LibreHardwareMonitor.Hardware.IHardware hw in thisComputer.Hardware)
    {
        Console.WriteLine("HARDWARE: " + hw.HardwareType);
        Console.ReadLine();

        hw.Update();
        // searching for all sensors and adding data to listbox
        foreach (LibreHardwareMonitor.Hardware.ISensor s in hw.Sensors)
        {
            Console.WriteLine("NAME: " + s.Name + ", TYPE: " + s.SensorType + ", VALUE: " + s.Value);
            Console.ReadLine();

            if (s.SensorType == LibreHardwareMonitor.Hardware.SensorType.Temperature)
            {
                Console.WriteLine(" FOUND " + s.SensorType);
                if (s.Value != null)
                {
                    Console.WriteLine(" FOUND VALUE " + s.Value);
                    float curTemp = (float)s.Value;
                    switch (s.Name)
                    {
                        case "Core Average":
                            Console.WriteLine(" FOUND NAME " + s.Name);
                            cpuTempA = curTemp.ToString();

                            Console.WriteLine(" ... ");
                            Console.WriteLine(" CPU AVG TEMP: " + cpuTempA);
                            Console.WriteLine(" ... ");
                            break;

                        case "CPU Core #": //CPU Core #1, CPU Core #2 ...
                            foreach (s.Name in LibreHardwareMonitor...? )
                            {
                                int i = 1;
                                cpuTemp = curTemp.ToString();
                                Console.WriteLine(" ... ");
                                Console.WriteLine(" CPU #" + i +" TEMP: " + cpuTemp);
                                Console.WriteLine(" ... ");
                                i++;
                            }                    
                            break;

                        }
                    }
                }

                if (s.SensorType == LibreHardwareMonitor.Hardware.SensorType.Clock)
                {
                    Console.WriteLine(" FOUND " + s.SensorType);
                    if (s.Value != null)
                    {
                        Console.WriteLine(" FOUND VALUE " + s.Value);
                        float curClock = (float)s.Value;
                        switch (s.Name)
                        {
                            case "CPU Core #4":
                                Console.WriteLine(" FOUND NAME " + s.Name);
                                cpuClock = curClock.ToString();
                                Console.WriteLine(" ... ");
                                Console.WriteLine(" CPU CLOCK: " + cpuClock);
                                Console.WriteLine(" ... ");
                                break;
                        }
                    }
                }
            }
        }
    }
}

参考方案

拆分字符串并将#之后的部分转换为整数

if (s.Name.Contains("#")) {
  string core_id_str = s.Name.Split('#')[1]; // gets second part of split
  int core_id = System.Convert.ToInt32(core_id_str); // convert to integer
  // do your magic
}

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

使用Json.NET反序列化复杂对象 - c#

我需要反序列化从grogle maps api返回的json:{ "destination_addresses": [ "Via Medaglie D'Oro, 10, 47121 Forlì FC, Italia", "Via Torino, 20123 Milano, Italia",…