我的c#代码出错了

本文关键字:错了 出错 代码 我的 | 更新日期: 2023-09-27 18:04:32

我是c#的新手,我在网上找到了这个脚本,并试图将其应用于我的项目,但我得到错误,不知道如何修复它…** **部分是红色卷曲下划线(错误)让我头疼的地方。
我怀疑using部分缺了什么?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.Threading.Tasks;
namespace cpuinfo
{
    public class Class1
    {
        public static int getMaxCPUFreqMHz()
        {
            int maxFreq = -1;
            try
            {
                **RandomAccessFile** reader = new **RandomAccessFile**("/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state", "r");
                bool done = false;
                while (!done)
                {
                    String line = reader.readLine();
                    if (null == line)
                    {
                        done = true;
                        break;
                    }
                    String[] splits = **line.Split("''s+")**;
                    **Assert**(splits.Length == 2);
                    int timeInState = **Integer**.parseInt(splits[1]);
                    if (timeInState > 0)
                    {
                        int freq = **Integer**.parseInt(splits[0]) / 1000;
                        if (freq > maxFreq)
                        {
                            maxFreq = freq;
                        }
                    }
                }
            }
            catch (IOException ex)
            {
                ex.**printStackTrace**();
            }
            return maxFreq;
        }
    }
}

我的c#代码出错了

看起来你想在这里混合Java和c# - Integer.parseInt()看起来很像Java,但命名空间和使用非常像c#。

我认为这可能是你的问题的根本原因。

看起来您使用的是Java JDK中的类。在c#中,我们不使用Assert, Integer或RandomAccessFile

你应该重写你的代码。将Assert更改为Debug。Assert或Trace.Assert。改变整数。转换为Convert.ToInt32。我不知道RandomAccessFile是什么。我猜你正在从文件中读取内容。你应该
using (StreamReader reader = new StreamReader ("/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state") {
                bool done = false;
                while (!done)
                {
                    String line = reader.ReadLine();
                    if (null == line)
                    {
                        done = true;
                        break;
                    }
                    String[] splits = line.Split('''', 's', '+');
                    Debug.Assert (splits.Length == 2);
                    int timeInState = Convert.ToInt32 (splits[1]);
                    if (timeInState > 0)
                    {
                        int freq = Convert.ToInt32(splits[0]) / 1000;
                        if (freq > maxFreq)
                        {
                            maxFreq = freq;
                        }
                    }
                }
}

只是改变所有的东西在try{}上面的代码,它应该是好的。

另外,printStackTrace不在。net框架中。您应该使用Console.WriteLine (ex.StackTrace)