我的C#代码出错了

时间:2015-07-25 11:23:42

标签: c# android visual-studio

我是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;
        }
    }
}

2 个答案:

答案 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)

如果您有任何其他错误,请告诉我们。