在c#中对字符串移位右运算符

时间:2013-04-29 22:52:02

标签: c# file architecture bit-shift

我有一个流阅读器对象“file”和一个字符类型变量“hex”

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#中右移不能应用于字符串变量,所以任何其他选项都要实现代码行..请任何帮助

实现此行的任何其他方式

1 个答案:

答案 0 :(得分:1)

在C#中,当其中一个操作数为<<时,您只能重载运算符>>int,因此这类代码严格禁止使用。

Reference

  

用户定义的类型可能会使>>运算符超载;第一种类型   操作数必须是用户定义的类型,以及第二个类型   操作数必须为int。有关详细信息,请参阅operator

你不能这样做的原因是因为语言设计师不希望你这样做,我当然不能错过它们。 line >> hex可能看起来很酷,但它与line.Insert(hex)的作用相同,而且通常对实际情况的描述要少得多。