c# - 获取对变量的引用并避免不必要地复制它
问题描述
假设我有这样的课程:
class Array{
int[] values;
}
现在假设我有一个存储很多Array
s 的类:
class ArrayOfArrays{
Array[] arrays;
}
假设,出于某种原因,我想获取最后Array
一个arrays
变量并放入一个变量(为了更好的可读性)。在 C 中,我会喜欢Array last = &ArrayOfArraysObject.arrays[lastIndex]
. 因为我不会修改它,为了获得更好的性能,我不需要复制整个数组,只需一个参考就可以了。
我可以在 C# 中有这种行为吗?(不使用函数调用,我不想创建一个函数只是为了使用关键字ref
,它看起来有点矫枉过正)
解决方案
您可以创建一个public
返回最后一个元素的属性arrays
。
class ArrayOfArrays
{
Array[] arrays;
public Array LastOfArrays { get { return arrays.Last(); } }
}
测试它:
var aoa = new ArrayOfArrays();
// Initialize and enter data here
//When you want to use the last item:
var last = aoa.LastOfArrays;
last.values[0] = 333;
现在,aoa.arrays[LastElement].values[0]
也将是333
。因此,您基本上确实在此处保留了引用,并且不会复制整个数组。
确认:
推荐阅读
- php - phpmyadmin 在实现后要求登录
- bash - 检查通过 curl 正确下载的文件时出错
- xss - antisamy 不编码@
- reactjs - React Fine-uploader 上传文件
- identityserver4 - 身份验证重定向到 IdentityServer 上的登录页面
- mysql - mysql select option_name where column match value and have any other
- shell - 在詹金斯管道上提取部分字符串
- r - dplyr::filter() 基于 dplyr::lag() 而不会丢失第一个值
- vue.js - 在 vuejs 中导入 sequelize 模型
- sql - 将 SAS 读入文件转换为 SQL