百科问答小站 logo
百科问答小站 font logo



C# 的 return ref 有什么具体应用? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

纯粹的返回一个栈引用的确没啥意义,而且容易造成野指针(应该在语言层面有所限制,待测试)。

但是这个的确和值类型还是引用类型没有啥关系,我们并不需要关心数组的元素是什么类型的。本质上,只要这是一个托管堆上的值就有意义。


可以认为说白了就是一个 object + member accesser 的包装,这种包装的意义和委托一样,就是获得可以直接访问成员的便利,还可以刺破封装什么的。


说白了,数组直接用Span就好了,这种东西就是Span对普通对象的拓展。

我们不要忘了有些东西看起来在栈上实际在堆上,例如闭包……




做了一些测试,首先就是ref T类型的玩意儿,是stack only的,即只能存在于栈上,而不能存在于堆上。



和 ref struct 差不多,所以这货就是Span的拓展了……


顺便也测试了一下,纯粹的栈引用是不能返回的:

显然这样就很安全了。


做了各种测试,都没有办法把纯粹的栈值按引用返回:




  

相关话题

  如何编写能够监听特定程序或全系统所有Http请求的.Net程序? 
  Java、C#、.NET Framework、Mono 是如何跨平台的? 
  visual studio调试c#时能否像调试mfc程序时追踪进微软的源码?需要如何设定? 
  C#异步方法返回Task的意义是什么?完整的TAP代码是什么结构? 
  如何编写能够监听特定程序或全系统所有Http请求的.Net程序? 
  我的一位老师说,Java 适用于大型软件而 C# 适用中小型软件。这是真的么? 
  C#的async和await底层是怎么做到的? 
  ASP.NET C# 如何做分布式负载均衡?具体思路? 
  C# 或者 SQL Server 生成的 GUID 有没有可能重复? 
  Build 2018 开发者大会上发布的 .NET Core 3.0 规划蓝图透露了哪些信息? 

前一个讨论
C# 引用类型相比于值类型意义何在?
下一个讨论
如何评价第151期《睡前消息》?





© 2025-01-28 - tinynew.org. All Rights Reserved.
© 2025-01-28 - tinynew.org. 保留所有权利