0

我有一个流阅读器对象“文件”和一个字符类型变量“十六进制”

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

实现此行的任何其他方式

4

1 回答 1

1

在 C# 中,您只能重载运算符<<并且>>当其中一个操作数是 时int,因此这种类型的代码是严格禁止的。

参考

用户定义的类型可以重载>>运算符;第一个操作数的类型必须是用户定义的类型,第二个操作数的类型必须是int. 有关详细信息,请参阅运算符

你不能这样做的原因是语言设计者不希望你这样做,我当然不能责怪他们。line >> hex可能看起来很酷,但它的作用与实际发生的事情相同,line.Insert(hex)而且通常不太能描述实际发生的事情。

于 2013-04-29T23:08:41.233 回答