我从C ++背景的。这个问题已经被问过,但尝试,因为我可能我无法找到答案。假设我有:
string[] ArrayOfReallyVeryLongStringNames = new string[500];
ArrayOfReallyVeryLongStringNames[439] = "Hello world!";
我可以创建一个字符串,上面的引用(它们都将编译):
string a = ref ArrayOfReallyVeryLongStringNames[439]; // no compile
string a = &ArrayOfReallyVeryLongStringNames[439]; // no compile
我也明白,字符串在C#中不可改变的。我也明白,你不能让一个管理对象的地址。
我想这样做:
a = "Donkey Kong"; // Now ArrayOfReallyVeryLongStringNames[439] = "Donkey Kong";
我已阅读堆栈溢出问题,请在C#中的另一个字符串的引用,其具有优良的答案,但略有不同的问题。我不想参照这个参数传递给函数。我知道如何使用“参考”关键字通过引用传递的参数。
如果答案是“您不能在C#中执行此操作”,是否有一个方便的解决方法?
编辑:有些答案表明问题是不清楚。让我们问它以不同的方式。说我需要操纵原长命名的数组有黄金指数中的所有项目。我想别名添加到阵列... [2],...阵列[3],阵... [5]等的列表。然后,修改使用“for”循环在列表中的项目(可能是通过传递刚刚创建的函数列表)。
C#中的“使用”关键字创建别名对类或命名空间。这似乎从答案,这是不可能的。然而,以创建一个别名给一个变量。
你可以得到的最接近的是这样的:
unsafe
{
string* a = &ArrayOfReallyVeryLongStringNames[439]; // no compile
}
这给出了一个例外:
无法获取地址,得到的大小,或指针申报托管类型(“字符串”)
所以,不,不可能的...
还可以阅读这个MSDN文章这也解释了什么类型的可以使用(Blittable型)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句