草庐IT

Out-Null

全部标签

c# - 在什么情况下 'out' 参数有用(不能使用 'ref' 的情况)?

据我所知,out参数的唯一用途是调用者可以从单个方法调用中获取多个返回值。但是我们也可以使用ref参数来获取多个结果值!那么在其他情况下,out参数是否有用,而我们不能使用ref参数呢?谢谢。 最佳答案 是的-ref和out之间的区别在于明确赋值:out参数不必必须在方法调用之前由调用者明确分配。它确实必须在它正常返回(即没有异常)之前在方法中明确分配。然后在调用之后明确地在调用者中分配变量。ref参数确实必须在方法调用之前由调用者明确分配。不必在方法中为其分配不同的值。假设我们想更改int.TryParse(string,outi

c# - 在什么情况下 'out' 参数有用(不能使用 'ref' 的情况)?

据我所知,out参数的唯一用途是调用者可以从单个方法调用中获取多个返回值。但是我们也可以使用ref参数来获取多个结果值!那么在其他情况下,out参数是否有用,而我们不能使用ref参数呢?谢谢。 最佳答案 是的-ref和out之间的区别在于明确赋值:out参数不必必须在方法调用之前由调用者明确分配。它确实必须在它正常返回(即没有异常)之前在方法中明确分配。然后在调用之后明确地在调用者中分配变量。ref参数确实必须在方法调用之前由调用者明确分配。不必在方法中为其分配不同的值。假设我们想更改int.TryParse(string,outi

c# - 为什么 Nullable<T> HasValue 属性不会在 Null 上抛出 NullReferenceException?

考虑以下代码:DateTime?ndate=null;Console.WriteLine(ndate.HasValue);我本以为会出现NullReferenceException,但HasValue确实会返回false。但是,由于ndate为空,属性调用如何成功,因为没有对象可以调用属性HasValue呢? 最佳答案 从技术上讲,“ndate”不是null-它是一种值类型,其值指定为null。当你写DateTime?,这只是Nullable的简写,这是一个结构。从技术上讲,这不可能为null,因为它不是引用类型。

c# - 为什么 Nullable<T> HasValue 属性不会在 Null 上抛出 NullReferenceException?

考虑以下代码:DateTime?ndate=null;Console.WriteLine(ndate.HasValue);我本以为会出现NullReferenceException,但HasValue确实会返回false。但是,由于ndate为空,属性调用如何成功,因为没有对象可以调用属性HasValue呢? 最佳答案 从技术上讲,“ndate”不是null-它是一种值类型,其值指定为null。当你写DateTime?,这只是Nullable的简写,这是一个结构。从技术上讲,这不可能为null,因为它不是引用类型。

c# - 处理 NULL 的最佳方法

在我的函数的顶部,我尝试用最好的方法来处理在C#中进入我的过程的null。哪个是检查和处理null的最佳方法,为什么?我已经添加了我现在正在使用的完整代码,Resharper告诉我使用选项#1。通常我会按照它说的去做,因为我明白为什么它会提高效率。这次虽然我不确定所以我必须问。Option#1if(sender==null)return;//CodegoeshereorOption#2if(sender!=null){//Codegoeshere}CompleteCodeprivatevoidEmployeeMouseHoverToolTip(objectsender,EventArg

c# - 处理 NULL 的最佳方法

在我的函数的顶部,我尝试用最好的方法来处理在C#中进入我的过程的null。哪个是检查和处理null的最佳方法,为什么?我已经添加了我现在正在使用的完整代码,Resharper告诉我使用选项#1。通常我会按照它说的去做,因为我明白为什么它会提高效率。这次虽然我不确定所以我必须问。Option#1if(sender==null)return;//CodegoeshereorOption#2if(sender!=null){//Codegoeshere}CompleteCodeprivatevoidEmployeeMouseHoverToolTip(objectsender,EventArg

c# - 在 C# 中使用 pinvoke 时 [In, Out] 和 ref 有什么区别?

在将参数从C#传递到C++时,使用[In,Out]和仅使用ref之间有区别吗?我发现了几个不同的SO帖子,以及来自MSDN的一些内容,这些内容与我的问题很接近,但没有完全回答。我的猜测是我可以像使用[In,Out]一样安全地使用ref,并且编码器的行为不会有任何不同。我担心的是它的行为会有所不同,并且C++不会对传递我的C#结构感到满意。我已经在我正在使用的代码库中看到了这两件事...以下是我找到并一直在阅读的帖子:AreP/Invoke[In,Out]attributesoptionalformarshalingarrays?让我觉得我应该使用[In,Out]。MSDN:InAttr

c# - 在 C# 中使用 pinvoke 时 [In, Out] 和 ref 有什么区别?

在将参数从C#传递到C++时,使用[In,Out]和仅使用ref之间有区别吗?我发现了几个不同的SO帖子,以及来自MSDN的一些内容,这些内容与我的问题很接近,但没有完全回答。我的猜测是我可以像使用[In,Out]一样安全地使用ref,并且编码器的行为不会有任何不同。我担心的是它的行为会有所不同,并且C++不会对传递我的C#结构感到满意。我已经在我正在使用的代码库中看到了这两件事...以下是我找到并一直在阅读的帖子:AreP/Invoke[In,Out]attributesoptionalformarshalingarrays?让我觉得我应该使用[In,Out]。MSDN:InAttr

c# - List.Sort 在 C# : comparer being called with null object

我在使用内置C#List.Sort函数和自定义比较器时出现奇怪的行为。出于某种原因,它有时会使用空对象作为参数之一调用比较器类的Compare方法。但是,如果我使用调试器检查列表,则集合中没有空对象。我的比较器类如下所示:publicclassDelegateToComparer:IComparer{privatereadonlyFunc_comparer;publicintCompare(Tx,Ty){return_comparer(x,y);}publicDelegateToComparer(Funccomparer){_comparer=comparer;}}这允许将委托(del

c# - List.Sort 在 C# : comparer being called with null object

我在使用内置C#List.Sort函数和自定义比较器时出现奇怪的行为。出于某种原因,它有时会使用空对象作为参数之一调用比较器类的Compare方法。但是,如果我使用调试器检查列表,则集合中没有空对象。我的比较器类如下所示:publicclassDelegateToComparer:IComparer{privatereadonlyFunc_comparer;publicintCompare(Tx,Ty){return_comparer(x,y);}publicDelegateToComparer(Funccomparer){_comparer=comparer;}}这允许将委托(del