2015-07-25 3 views
0

Я новичок в C#, я нашел этот скрипт онлайн и попытался применить его в своем проекте, но я получаю ошибки и не знаю, как это исправить ... ** ** часть - это то, где красные курчавые подчеркивания (ошибки) делают меня такой головной болью.
Сомневаюсь, что в части using отсутствует что-то не так ли?Мой код C# получает ошибки

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

Вы уверены, код вы нашли для C#? Также опубликуйте ошибки. Я думаю, он не может найти «RandomAccessFile», «Assert», «Integer» и «printStackTrace», потому что это из Java. – IllidanS4

+0

Где находится этот код? –

+0

@ArthurRey http://android.stackexchange.com/questions/19810/how-can-i-determine-max-cpu-speed-at-runtime –

ответ

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).

Если у вас есть больше ошибок, пожалуйста, дайте мне знать.

+0

Все еще получайте красные курчавые подчеркивания, это показывает, что имя «done/reader» не существует в текущем контексте ». ** Снимок экрана ** -> http://prntscr.com/7wu04w –

+0

Вы забыли положить фигурные скобки для инструкции 'using'? Я не могу воспроизвести ошибку. @darkfang – Sweeper

+0

Да, я поставил фигурные скобки! В строке 'bool done = false;', я получаю 2 ошибки, 1) ** Недопустимый термин выражения 'bool' ** 2) ** Синтаксическая ошибка, ',' expected; **. @Sweeper –

3

Похоже, вы пытаетесь смешать Java и C# здесь - Integer.parseInt() выглядит подозрительно, как Java, но пространство имен и использовать очень много C#.

Я предлагаю, что это может быть основной причиной ваших проблем.

+0

То же самое с именованием и т. Д. Это как смесь, cuz '.Split (...)' и '.Length' больше похожи на C#, где в Java они, вероятно, будут похожи на' .split (...) ' , '.getLength()' или 'length()' – Bauss

+0

@Bauss Поскольку я использую C#, можно ли заменить функцию Java на C#, не внося никакого изменения в результат в мой код? –

+0

Ну, вы можете переписать весь код на C#. – Bauss

Смежные вопросы