栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以在C#中返回对变量的引用?[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以在C#中返回对变量的引用?[重复]

更新资料

此功能已添加到C#7中。您可以使用语法,就像在问题中张贴的一样。例如:

double[,,] doubleArray = new double[10,10,10];ref double GetElement(){   var (x,y,z) = (1,2,3);   return ref doubleArray[x, y, z];}

埃里克·利珀特(Eric
Lippert)的答案很
详细。我可能会删除此答案,但由于它是已接受的答案,因此无法删除。

原始答案

C#中的值类型始终按值传递。对象始终按值传递其引用。正如Axarydax所指出的,这种“不安全”代码的变化。

避免此约束的最简单,最安全的方法是确保双精度对象以某种方式附加到对象。

public class MyObjectWithADouble {    public double Element {get; set;} // property is optional, but preferred.}...var obj = new MyObjectWithADouble();obj.Element = 5.0

我还想指出,我对如何将双精度型分配给三维数组感到有些困惑。 您可能需要澄清要做什么。

我想我对您目前的打算了解得更好。您想要返回值在给定数组中的位置,然后能够在该位置更改值。这种模式打破了C#的一些预期范式,因此我建议考虑其他方法来实现您想要的目标。但是,如果这样做确实有意义,我会做更多类似的事情:

public class 3dArrayLocation {public int X; public int Y; public int Z;}...public 3dArrayLocation GetElementLocation(...){    // calculate x, y, and z    return new 3dArrayLocation {X = x, Y = y, Z = z}}...var location = GetElementLocation(...);doubleArray[location.X, location.Y, location.Z] = 5.0;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400754.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号