通过使用ref对数组中元素的方法修改数组中的值类型是安全的,如下所示?如果是这样,可以通过这种方式修改哪种类型的值?它仅限于简单的值类型,还是struct
也可以使用?
// Method that sets an integer to x.
void SetToX(ref int element, int x) {
element = x;
}
// Int array with one element set to 0.
int[] myIntArray = new int[1] {0};
// (Try to) set element 0 of the int array to 1.
SetToX(ref myIntArray[0], 1);
// Will this log "0" or "1"?
Log(myIntArray[0].ToString());
答案由Reed Copsey和Alexei Levenkov提供
这很好用 - 示例代码将打印“1”。这也适用于任何值类型,包括struct
。
但是,对于数组来说,这只是 ONLY 。如果您尝试以这种方式修改其他类型的集合,系统将提示您:
A property, indexer or dynamic member access may not be passed as an out or ref parameter
这是因为只有数组实际上返回对元素中值类型的引用。所有其他集合将返回元素的副本,并使用ref将修改副本,保留原始元素。
答案 0 :(得分:1)
是的,这很好用。
您的示例代码将打印出来:
1
如果是这样,可以通过这种方式修改哪种值类型?是仅限于简单的值类型还是结构也有效?
任何值类型。自定义struct
将具有相同的行为。