通过引用传递StreamReader对象

肖恩

我正在VS 2013中使用C#创建一个小型文件解析控制台应用程序。我正在StreamReader读取文件并通过解析行从文件中的数据创建对象。

我调用一个方法CreateHeader()来创建Header对象,并将该StreamReader对象传递给读取特定的行,创建Header对象,然后将该对象返回给调用方法。我要通过StreamReader引用传递该对象,因为我希望StreamReader在调用方法中对其进行更新,以获取该CreateHeader()方法中断的文件中的下一行但是,当对象返回到调用方法时,该StreamReader对象未更新,并且在调用该方法时它仍位于文件中的同一行CreateHeader()

如何将StreamReader对象传递给另一个函数,并StreamReader在调用函数对其进行更新?这是一些示例代码:

static Header CreateHeader(ref StreamReader sr)
{
    Header hd = new Header();

    string formTitle = string.Empty;
    string[] words;
    string _line = string.Empty;;

    for(int x = 0; x < 5; x++)
    {
        _line = sr.ReadLine();
        Console.WriteLine(_line);
    }
}

static void ParseLines()
{
    Header _hd = CreateHeader(ref sr);
    _line = sr.ReadLine();
    prodList = new List<InventoryActivityProducts>();
}
rae1

首先,StreamReader示例中使用的方式(无论使用哪种方式ref)都应该完成您要实现的目标。由于您没有sr在示例中初始化流阅读器(),因此错误可能出在您未显示的内容上。在这两种情况下,流读取器都在Position内部保留一个属性,属性指示应在流中下一个读取的位置。在不修改此属性的情况下,阅读器将仅从中断处继续。

其次,此行为是可能的,因为流读取器是引用类型。不必太过深入,这意味着当您将读取器的实例传递给方法时,它将传递该方法在内存中所处的地址(类似0x0FA7230);这与值类型相反,在值类型中,实例通过值(变量的实际值,如4传递因此,当您调用ReadLine流阅读器时,它将在与外部方法相同的实例上调用该方法(因此,为什么它应该按预期工作)。使用ref是一个完全不同的概念(不幸的是,它仅供参考)。使用传递变量ref(无论它是引用还是值类型)都将传递变量的地址(注意,不是实例的地址),或者实际上是引用类型的地址的地址和值类型的值的地址。当您要在内部方法中初始化变量并在外部方法中使用结果时(这实际上是从方法返回多个值的另一种方式),这很有用;但除此之外,您极有可能不需要使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过引用传递对象

来自分类Dev

通过引用传递指向的对象

来自分类Dev

在C ++中通过引用传递对象

来自分类Dev

通过引用传递PDO连接对象?

来自分类Dev

AngularJS,在指令中通过引用传递对象

来自分类Dev

java避免对象通过引用传递

来自分类Dev

通过引用传递mat对象OpenCv

来自分类Dev

为什么javascript通过引用传递对象?

来自分类Dev

为什么对象通过引用自动传递?

来自分类Dev

java避免对象通过引用传递

来自分类Dev

通过引用传递的对象不起作用?

来自分类Dev

通过模糊对象传递引用

来自分类Dev

在php中通过引用传递对象时,对象不会启动

来自分类Dev

通过引用将对象传递给其他对象

来自分类Dev

通过值传递对象与通过引用传递对象时,运行速度较慢

来自分类Dev

如何影响R中通过引用传递的对象?

来自分类Dev

Javascript-返回通过引用传递的修改对象

来自分类Dev

如何不通过引用传递PHP对象

来自分类Dev

在堆上声明对象,然后通过引用传递它?

来自分类Dev

foreach循环中的对象通过引用传递,不带“&”

来自分类Dev

通过引用将函数对象传递给std算法

来自分类Dev

正在通过引用将对象传递给构造函数

来自分类Dev

javascript对象是否通过引用或值传递

来自分类Dev

通过引用将对象传递给线程

来自分类Dev

如何停止通过引用存储在原型中的对象传递?

来自分类Dev

为什么Javascript变量没有对象通过引用传递?

来自分类Dev

如何通过引用将对象传递给构造函数

来自分类Dev

C ++:通过引用传递(指针指向?)对象数组

来自分类Dev

提升线程不填充通过引用传递的本地对象

Related 相关文章

热门标签

归档