我的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;
}
}
}
看起来你想在这里混合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)
。