Tag: out

C#中和out之间有什么区别?

我在查找P / Invoke定义时都看到了……有时使用[Out] ,有时候out ……我假设它们是相同的。

不能将基类型的变量作为out参数传递?

刚注意到这不起作用: var dict = new Dictionary(); XContainer element; //… if (dict.TryGetValue(idx, out element)) { //… 然后我尝试了这个: class A { } class B : A { } class Program { static void Main() { A a; a = Ret(); // no error, ok Ref(ref a); // compiler error, ok… Out(out a); // compiler error, lolwut?! } […]

使用REF和OUT关键字在C#中按值传递和传递值

这是我到目前为止所理解的: 通过价值 按值传递意味着传递参数的副本。 对该副本的更改不会更改原始副本。 通过参考 通过引用传递意味着传递对原始的引用。 对引用的更改会影响原始引用。 REF关键字 REF告诉编译器在进入函数之前初始化对象。 REF表示该值已经设置,因此该方法可以读取并修改它。 REF有两种方式,包括进出。 OUT关键字 OUT告诉编译器该对象将在函数内初始化。 OUT表示该值尚未设置,因此必须在调用return之前设置。 OUT只是一种方式,即出局。 题 那么在什么情况下你会结合使用ref和out关键字,通过引用传递还是通过值传递? 例子会有很大帮助。 非常感谢。

调用者的“out”关键字的目的是什么(在C#中)?

当C#函数具有输出参数时,您可以按如下方式清除: private void f(out OutputParameterClass outputParameter); 这表明在调用函数时不必初始化参数。 但是,在调用此函数时, 您必须重复out关键字 : f(out outputParameter); 我想知道这有什么好处。 为什么有必要重复部分function规范? 有人知道吗?

Console.ReadLine将48添加到int

当我向ReadLine()输入0时,我得到48。 这是一个错误吗? class Program { static void Main(string[] args) { string name; int age; readPerson(out name, out age); } static void readPerson(out string name, out int age) { Console.Write(“Enter name: “); name = Console.ReadLine(); Console.Write(“Enter age: “); age = Console.Read(); Console.WriteLine(“Name: {0}; Age: {1}”, name, age.ToString()); } }

C#PInvoke out字符串声明

在C#PInvoke中,如何传递一个字符串缓冲区,以便C DLL填充它并返回? 什么是PInvoke宣言? C函数声明是 int GetData(char* data, int buflength); 在C#中,我已将其声明为 [DllImport(DllName)] static extern Int32 GetData([MarshalAs(UnmanagedType.LPStr)]StringBuilder receiveddata, Int32 buflen); 这是对的吗? 我像这样传递StringBuilder变量 int bufferLength = 32; StringBuilder data = new StringBuilder(bufferLength); int result = GetData(data, bufferLength); 我想知道它是否正确? 谢谢

如何使用out参数声明generics委托

Func ,只是不编译,如何声明我想要第二个参数是一个? 我想像这样使用它: public class Foo() { public Func DetectMethod; }