我是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;
}
}
}
答案 0 :(得分:3)
看起来你正在尝试将Java和C#混合在一起 - Integer.parseInt()
看起来像Java一样可疑,但命名空间和使用非常多C#。
我建议这可能是您问题的根本原因。
答案 1 :(得分:1)
您似乎使用了Java JDK中的类。在C#中,我们不使用Assert,Integer或RandomAccessFile
您应该重写代码。将Assert更改为Debug.Assert或Trace.Assert。将Integer.parseInt更改为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 Framework中。您应该使用Console.WriteLine (ex.StackTrace)
。
如果您有任何其他错误,请告诉我们。