2013-04-29 3 views
0

У меня есть читатель объект «файл» поток и переменный «шестигранник» типа символовсдвиг вправо оператора на струнах в C#

System.IO.StreamReader file = new System.IO.StreamReader(filename); 

char[] hex=new char[20]; 
int @base; 

кода я хочу осуществить это

 string line; 
     while ((line=file.ReadLine()) != null) //Reading each address from trace file 
     { 

      if (@base != 10) 
      {   
       line >> hex; 
       ///this line giving errors, as shift right cannot be implemented on string types 
       address = changebase(hex, @base); 

      } 
      else 
       line >> address; 

Я создавая проект хитов и пропусков кэш-памяти. Но в C# сдвиг вправо не может быть применено к строковым переменным, так и любой другой вариант реализовать строки кода .. Пожалуйста помощь

Любой другой способ реализации этой линии

+0

Сначала выберите язык. Какой из них 'C#' или 'C++'? – I4V

+0

@ I4V C# language, я использую –

+1

Сначала объясните, что вы думаете, что оператор 'shift right' должен делать со строкой как левым операндом и массивом char как правым операндом. – Steve

ответ

1

В C# вы можете перегрузить только операторы << и >>, когда один из операндов является int, поэтому этот тип кода строго не ограничен.

Reference:

определяемые пользователем типы могут перегрузить оператор >>; тип первого операнда должен быть определяемым пользователем типом, а тип второго операнда должен быть int. Для получения дополнительной информации см. operator.

Причина, по которой вы не можете этого сделать, заключается в том, что языковые дизайнеры не хотели вас видеть, и я, конечно, не могу их винить. line >> hex может выглядеть круто, но он делает то же самое, что и line.Insert(hex), и, как правило, гораздо менее описывает то, что на самом деле происходит.

+0

Я использовал метод insert как line.Insert (0, Convert.ToString (hex)); –

+0

@HanyaIdrees: Это подразумевается в качестве примера. Я не могу предложить реальный мир, потому что я понятия не имею, что ваш код пытается сделать. – Jon

+0

для сдвига вправо, индекс начала должен быть 0 или нет. –