7得票2回答
在混合数组中检测元素类型

我正在处理一个包含子例程的代码,其中包括数组引用作为参数之一。这个传入数组中的元素可以是小数组或字符串。 我想确定每个元素的类型以执行特定操作(例如,如果元素是数组,则通过索引进一步钻取它,如果元素是字符串,则使用该字符串) 我尝试使用ref函数来询问每个数组元素的类型。它似乎适用于数...

8得票2回答
为什么在C#中会对数组参数使用ref关键字?

我阅读了页面使用 ref 和 out 传递数组 (C# 编程指南),并想知道为什么需要将数组参数定义为 ref 参数,因为它已经是引用类型了。在被调用函数中进行的更改不会反映在调用函数中吗?

50得票5回答
为什么迭代器方法不能使用'ref'或'out'参数?

我今天早些时候尝试了这个:public interface IFoo { IEnumerable<int> GetItems_A( ref int somethingElse ); IEnumerable<int> GetItems_B( ref int...

60得票3回答
有趣的面试练习结果:返回、后增和引用行为

这里是一段简单的控制台应用程序代码,它返回的结果我不完全理解。 请尝试思考它在控制台输出0、1还是2: using System; namespace ConsoleApplication { class Program { static void Mai...

9得票4回答
传递引用类型使用ref关键字能节省内存吗?

在C#中,方法的参数可以是引用类型或值类型。当传递引用类型时,会传递引用的副本。这样,如果在方法内部尝试将传递的引用重新分配给另一个对象实例,则在方法外部不可见。 为了使其工作,C#有ref修饰符。使用ref传递引用类型实际上使用原始引用而不是副本。(如果我错了,请纠正我。) 在这种情况下...

7得票2回答
扩展方法和本地“this”变量

据我所知,扩展方法中的this被传递为一个ref变量。我可以通过以下方式进行验证: public static void Method<T>(this List<T> list) { list.Add(default(T)); } List<int&g...

8得票6回答
为什么在声明和调用时都需要使用ref关键字?

重复的问题: 什么是 C# 中“out”关键字的作用? 为什么我需要在声明和调用中都使用'ref'关键字。 void foo(ref int i) { } 例如,考虑上述函数。如果我不使用ref关键字调用它,则为: foo(k); 会给我报错: 参数“1”必须使用“ref”...

8得票7回答
在C#函数中将“string”作为参数类型

在C#中,string类型是一个引用类型。当按值传递引用类型参数时,会复制引用,因此不需要使用ref修饰符。但是,如果要修改输入的string,则需要使用ref修饰符。为什么会这样呢? using System; class TestIt { static void Functio...

21得票2回答
理解:警告:函数组件不能被赋予refs。

我知道 refs 用于直接访问 DOM 元素而不更改状态。我读到过不能给函数组件提供 refs,因为它们没有状态。 引用无法附加到函数组件。虽然我们可以定义 refs 并将其附加到 DOM 元素或类组件。底线是 - 函数组件没有实例,所以你不能引用它们。 摘自:https://blog.l...

11得票4回答
在不返回TypedReference的情况下,使其在方法块之外保持有效

我想先声明,这个问题的目的是检查是否至少有一种方法,即使通过最不安全的黑客方式,来保留对非平板值类型的引用。我知道这样的设计类型类似于犯罪;除了学习之外,我不会在任何实际情况下使用它。所以现在请接受阅读这个异端的不安全代码。 我们知道可以通过以下方式存储和增加对平板类型的引用: unsaf...