首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么返回MemoryStream会将位置设置为end

返回MemoryStream会将位置设置为end的原因是因为MemoryStream是一个可变大小的内存缓冲区,它可以用来存储二进制数据。当我们向MemoryStream写入数据时,它会自动增长以容纳更多的数据。而当我们从MemoryStream中读取数据时,位置指针会随着读取的字节数逐步向前移动。

当我们将MemoryStream传递给其他方法或函数时,如果这个方法或函数在读取完数据后没有将位置指针重新设置为起始位置,那么下一次读取数据时就会从当前位置开始读取,而不是从起始位置开始读取。这就导致了返回的MemoryStream的位置被设置为end。

这种行为在某些情况下是有用的,比如在将MemoryStream作为参数传递给其他方法时,可以避免重复读取已经读取过的数据。但在其他情况下,如果我们希望每次读取数据时都从起始位置开始,就需要在使用返回的MemoryStream之前手动将位置指针设置为起始位置,可以使用Seek(0, SeekOrigin.Begin)方法来实现。

总结起来,返回MemoryStream会将位置设置为end是为了提高效率和避免重复读取数据,但在某些情况下需要手动将位置指针设置为起始位置。

相关搜索:为什么我的end=变量没有被设置为1?将CameraType设置为Scriptable不会将相机固定到某个位置当高度设置为100%时,滚动位置返回零为什么Ionic default会将ion-bouncing on ion-content设置为false?当multline设置为true时,IOS react本地onSelectionChange会将光标移动到初始位置为什么复制>= 16 GB Numpy数组会将其所有元素都设置为0?为什么我把回收视图的项目位置设置为"-1"?为什么字典元素返回长度为1,而该位置的字符串应该返回9?当我将代码设置为作为</input>返回时,为什么它返回</h2>?为什么当tsconfig target设置为es5时,instanceof check返回false,而当设置为esnext时,instanceof check返回true?为什么iOS 13核心位置有时会在后台返回坐标为0,0的位置?为什么当lowBound设置为零时,PulP会为混合问题返回负值?为什么当我将文本设置为链接时,文本的位置会发生变化?为什么在我为JTextArea设置插入符号位置后,文本会发生变化?当我将值设置为setRGB时,getRGB返回一个不同的值。为什么?为什么在NetLogo中相邻的补丁不以海龟位置为中心?另外,当在邻居处设置“目标”时,为什么它不是互惠的?当两个单词被设置为单独的'TEXT‘条件对象时,spacy matcher返回正确答案。为什么呢?为什么在将其设置为NUM_THREADS =12的情况下torch.get_num_threads仍返回1当np.nan设置为默认值时,为什么np.select返回'nan‘作为字符串,而不是np.nan?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C# 温故而知新:Stream篇(—)

    其实Seek方法就是重新设定流中的一个位置,在说明offset参数作用之前大家先来了解下SeekOrigin这个枚举: 如果 offset 负,则要求新位置位于 origin 指定的位置之前,其间隔相差...如果 offset 零 (0),则要求新位置位于由 origin 指定的位置处。 如果 offset 正,则要求新位置位于 origin 指定的位置之后,其间隔相差 offset 指定的字节数....Seek(-3,Origin.End); 表示在流末端往前数第3个位置 Stream. Seek(0,Origin.Begin); 表示在流的开头位置 Stream....Seek(3,Orig`in.Current); 表示在流的当前位置往后数第三个位置 查找之后会返回一个流中的一个新位置。...我会在后续章节详细阐述 using (MemoryStream stream = new MemoryStream()) {

    77690

    C# 温故而知新:Stream篇(—)

    其实Seek方法就是重新设定流中的一个位置,在说明offset参数作用之前大家先来了解下SeekOrigin这个枚举: 如果 offset 负,则要求新位置位于 origin 指定的位置之前,其间隔相差...如果 offset 零 (0),则要求新位置位于由 origin 指定的位置处。 如果 offset 正,则要求新位置位于 origin 指定的位置之后,其间隔相差 offset 指定的字节数....Seek(-3,Origin.End);  表示在流末端往前数第3个位置 Stream. Seek(0,Origin.Begin); 表示在流的开头位置 Stream....Seek(3,Orig`in.Current); 表示在流的当前位置往后数第三个位置 查找之后会返回一个流中的一个新位置。...我会在后续章节详细阐述 using (MemoryStream stream = new MemoryStream()) {

    1.3K80

    C# 温故而知新:Stream篇(五)上

    ,系统内存提供读写操作,由于MemoryStream是通过无符号字节数组组成的,可以说MemoryStream的性能可以 算比较出色,所以它担当起了一些其他流进行数据交换时的中间工作,同时可降低应用程序中对临时缓冲区和临时文件的需要...1}M,溢出时容量{2}M", GC.GetTotalMemory(false) / (1024 * 1024),//MemoryStream...,会引起系统频繁地访问磁盘,增加磁盘I/O;设置太大,会浪费内存资源。...数组,这个构造很重要,初学者或者用的不是很多的程序员会忽略这个构造导致后面读取或写入数据时发现memoryStream中 没有byte数据,会导致很郁闷的感觉,大家注意下就行,有时也可能无需这样,因为很多方法返回值已经是...MemoryStreamMemoryStream(int capacity) 这个是重中之重,为什么这么说呢?

    1.3K50

    ActiveReports 报表应用教程 (16)---报表导出

    通过多种属性对数字签名进行个性化设置, 用数字签名验证报表作者,还可通过Certification Level 来设定用户访问权限。用时间印章功能建立第三方授权版本。...本文以客户订单例演示如何将葡萄城ActiveReports报表导出各种格式。...1、创建报表文件 在应用程序中创建一个名为 rptInvoice.rdlx 的 ActiveReports 报表文件,使用的项目模板 ActiveReports 页面报表。...订单明细.产品ID = 产品.产品ID) INNER JOIN 客户 ON 订单.客户ID = 客户.客户ID ORDER BY 订单.订购日期 DESC; 4、设计报表界面 4.1、选中报表文件,并设置以下属性...: 常规-数据集名称: OrderDetails 分组: 名称:FixedPage1_Group 表达式:=[订单ID] 4.2、从 VS 中将 Table 控件添加到报表设计界面,并按照以下列表设置相应属性

    2.1K51

    .NET性能优化-使用RecyclableMemoryStream替代MemoryStream

    RecyclableMemoryStream首先会使用一个小的缓冲区,随着写入数据的增多,会将其它缓冲区链接起来组合使用。...另外您还可以为Stream设置初始容量,如果容量大于单个缓冲区大小,会在一开始就链接好多个块,当然也可以直接分配大型缓冲区,只需将asContiguousBuffer设置true。...使用完Stream后,这些缓冲区将通过RecyclableMemoryStream的Dispose方法返回到池中。...如果你把这些属性设置0,你就会有无限制的池增长,这与内存泄漏基本上没有区别。对于每一个应用程序,你必须通过分析和实验来确定内存池大小和垃圾收集之间的适当平衡。...blockSize、largeBufferMultiple、maxBufferSize、MaximumFreeLargePoolBytes 和 MaximumFreeSmallPoolBytes属性设置符合你的应用和资源要求的合理值

    53930

    .NET性能优化-使用RecyclableMemoryStream替代MemoryStream

    RecyclableMemoryStream首先会使用一个小的缓冲区,随着写入数据的增多,会将其它缓冲区链接起来组合使用。...另外您还可以为Stream设置初始容量,如果容量大于单个缓冲区大小,会在一开始就链接好多个块,当然也可以直接分配大型缓冲区,只需将asContiguousBuffer设置true。...使用完Stream后,这些缓冲区将通过RecyclableMemoryStream的Dispose方法返回到池中。...如果你把这些属性设置0,你就会有无限制的池增长,这与内存泄漏基本上没有区别。对于每一个应用程序,你必须通过分析和实验来确定内存池大小和垃圾收集之间的适当平衡。...blockSize、largeBufferMultiple、maxBufferSize、MaximumFreeLargePoolBytes 和 MaximumFreeSmallPoolBytes属性设置符合你的应用和资源要求的合理值

    41410

    如何将类序列化并直接存储入数据库

    、另一种自定义序列化。...) {    start=Start;    end=End;   interval=Interval; } // 如果已经到了结束的时间,则返回结束时间,否则返回下一次运行的时间 public System.DateTime...long Interval) {   start=Start;   end=End;   interval=Interval;  } // 如果已经到了结束的时间,则返回结束时间,否则返回下一次运行的时间...表字段设置如下: a. 唯一标识字段名称为”ID”,类型Int。 b. 名称为”Description”的VarChar类型的字段,字段长度50。 c....在属性窗口中修改NamebuttonFileToDB, Text 属性从文件保存到数据库, 然后修改NamebuttonDBToFile ,Text 属性从数据库保存到文件。

    2.3K10

    C#实现简易XML阅读器(含源文件和exe文件)

    例如我在catch里return a,而a=1,即使我在finally里把a赋值成2,那最后返回的仍然是1....MessageBoxIcon.None); } 查找之前使用Getword()来获取最新的char数组,此时还要考虑一种情况,假设用户需要查找”abc”,并且用户当前已经选中”abc”,就需要将起始位置设置光标位置的后...同时如果用户勾选了”循环”,则变量 i 超出文本长度时,需要将它设置0,但是这又会引起另一个问题:死循环。...对齐与高亮 对齐可以使用C#自带的XmlTextWriter来实现,注意命名空间System.Xml 高亮比之前的查找和替换简单,只需要根据尖括号来查找就行,并将尖括号里的内容设置蓝色 if (richTextBox1...memoryStream = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(memoryStream, null)

    78520

    C#泛型方法解析

    可能有人会疑问,为什么泛型会带来这么多好处,使用一个不能区分不同类型的常规API,相当于在一个动态环境中访问那个API。    ...定义泛型类型或方法时,类型指定了任何变量(如:T)都称为类型参数。(T是一个变量名,在源代码中能够使用一个数据类型的任何位置,都可以使用T)在C#中泛型参数变量要么成为T,要么至少一大写T开头。...设置的值 null,或者不是集合的正确泛型类型 。.../// /// /// /// 如果引用类型,则返回类型 的对象;如果值类型,则返回类型...如果集合中不包含类型 的对象,则返回类型的默认值:如果是引用类型,默认值 null;如果是值类型,默认值 0。

    3.4K90

    EPPlus将图片流嵌入到Excel

    这次为什么又提起呢?是因为一开始用FastReport做报表不错,但后来要求导出到Excel并且要在文件中插入图片,那就犯难了。因为图片是放在云服务器上的,最简单就做个图片引用就完事。...imageData = new System.IO.MemoryStream(DownloadImageAsByteArray(img_src)); 上面的DownloadImageAsByteArray...的方法,就是将图片地址的图片转为byte字段,然后再写入MemoryStream类了,就完成图片的采集。..., 300); image.SetPosition(rowIndex - 1, 30, 9, 30); 大概就是将微信云的图片转为 http方式,然后将图片存入文件流;再注入到EPPlus,然后就设置图片大小及位置...这里值得一提的是SetPosition,SetPosition可以4个参数,第一个Row就是行,第二个就行起位置,第三个就是列,最后一个就是列起位置

    41520

    asp.net web api 文件上传

    ,那么可正常上传文件,如果大于服务端设置的缓冲区的大小,则无法正常上传,调试服务端代码,当执行到task.Wait();这行语句时,客户端一直等待,直到客户端调用超时,永远也无法返回调用结果,发生了死锁...这个方法有几个重载的方法,其中一个是不显示设置缓冲区大小,那么缓冲区大小默认的。 4 对第二种方法的错误点分析: 看Web api dll源码中的设置: ?...可以看出 默认的缓冲区区大小32*1024,即32K,那么上传超过32k而不设置缓冲区大小的情况下,为什么会发生死锁,而将缓冲区设置超过上传文件大小为什么不会发生死锁呢?...然而,ReadAsMultipartAsync方法的返回值是Task(T streamProvider),所以当调用Task.Wait()方法等待的时候,ReadAsMultipartAsync...5 第一种方法为什么不会出现死锁? 第一种方法使用await,实现同步机制,而没有调用Task.Wait()方法,这样就避免了A、B两块代码块互相等待返回结果而导致死锁的可能。

    5K110
    领券