流权转换运算符在C#中等效?

时间:2016-11-23 20:40:35

标签: c# c++ .net stream double

我试图将一个类从C ++转换为C#,并且在Binary Right Shift Operator'>>'中遇到了两个错误。

这是转换为C#的原始C ++代码(不进行编辑):

public static void ReadSeatPrices()
    {
        ifstream fin = new ifstream();
        fin.open("SeatPrices.txt");
        int i = 0;
        while (fin != null)
            {
                fin >> seatprices[i];
                i++;
            }
       fin.close();
    }

在Visual Studio 2015中编译类时,由于ifstream,首先发生了多个错误,因此我自然编辑了代码以删除这些错误,现在它看起来像这样:

public static void ReadSeatPrices()
    {
        FileStream fin = new FileStream("seat.txt", FileMode.Open,
            FileAccess.Read);
        int i = 0;
        while (fin != null)
        {
            fin >> seatprices[i];
            i++;
        }
        fin.Close();
    }

现在我有两个错误是由这一行引起的:

fin >> seatprices[i];

错误列表输出表明:

  

"运营商'>>'不能应用于' FileStream'类型的操作数&安培; '双'

     

只能将赋值,调用,递增,递减和新对象表达式用作语句。

我是否必须在C#中使用某种等效运算符?如果有人能帮我理解我的错误,我将不胜感激。

2 个答案:

答案 0 :(得分:3)

if

如果您无法保证可以进行转换,请使用TryParse()。如果您确定转换始终有效,则可以取消>>并仅使用Parse()

您应该使用ReadLine()中的StreamReader方法(这是此作业的正确类)来读取流。 C#没有{{1}}运算符重载。

使用using。 C#没有自动RAII

将代码从一种语言翻译成另一种语言并不是一对一的,你需要找到正确的习语。

答案 1 :(得分:2)

如果我没记错的话

fin >> seatprices[i];

正在将值从fin分配到seatprices[i]

在这种情况下,您所做的就是逐行阅读文本,MSDN example 会有所帮助