草庐IT

ref_count

全部标签

C#:如何将 null 传递给需要 ref 的函数?

我有以下功能:publicstaticexternuintFILES_GetMemoryMapping([MarshalAs(UnmanagedType.LPStr)]stringpPathFile,outushortSize,[MarshalAs(UnmanagedType.LPStr)]stringMapName,outushortPacketSize,refMappingoMapping,outbytePagesPerSector);我想这样调用它:FILES_GetMemoryMapping(MapFile,outsize,MapName,outPacketSize,null,

C# ref 是像 C/C++ 中的指针还是 C++ 中的引用?

我正在使用ref并且没有清楚地理解“它是像C/C++中的指针还是像C++中的引用?”为什么我问了你一时想的这么弱的问题?因为,当我阅读C#/.NET书籍、msdn或与C#开发人员交谈时,我会因以下原因而感到困惑:C#开发人员建议不要在函数的参数中使用ref,例如...(refTypesomeObject)对他们来说闻起来不好,他们建议...(TypesomeObject),我真的不清楚这个建议。我听到的原因:最好使用对象的副本,然后将其用作返回值,不要通过引用破坏内存等......我经常听到有关DB连接对象的解释。根据我的普通C/C++经验,我真的不明白为什么在C#中使用引用是一件坏事

c# - 为什么迭代器方法不能采用 'ref' 或 'out' 参数?

我今天早些时候试过这个:publicinterfaceIFoo{IEnumerableGetItems_A(refintsomethingElse);IEnumerableGetItems_B(refintsomethingElse);}publicclassBar:IFoo{publicIEnumerableGetItems_A(refintsomethingElse){//Ok...}publicIEnumerableGetItems_B(refintsomethingElse){yieldreturn7;//CS1623:Iteratorscannothavereforoutpa

c# - .NET 数组 - "Length"、 "Count()"和 "Rank"之间的区别

.NET数组的“Length”、“Count()”和“Rank”之间有什么区别? 最佳答案 Length是数组对象的属性,使用它是确定数组中元素数(Array.LengthinMSDNdocumentation)的最有效方法。Count()是一个LINQ有效相同的扩展方法。它适用于数组,因为数组是可枚举的对象。最好使用Length,因为Count()可能更昂贵(请参阅thisquestion进一步讨论和MSDNdocumentationonCount引用)。Rank是返回维数的属性(完全不同)。当你声明一个数组int[,]myArr

c# - Linq Count() 比 List.Count 或 Array.Length 快还是慢?

是LINQCount()任何比List.Count更快或更慢的方法或Array.Length? 最佳答案 一般较慢。LINQ的计数一般是O(N)运行时List.Count和Array.Length都保证是O(1).然而,在某些情况下,LINQ会将IEnumerable作为特殊情况通过转换为某些接口(interface)类型的参数,例如IList或ICollection.然后它将使用该Count方法执行实际的Count()。手术。所以它会回到O(1).但是您仍然需要支付转换和接口(interface)调用的少量开销。

c# - 为什么 Count 不是无符号整数?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:Whydoes.NETuseintinsteadofuintincertainclasses?WhyisArray.Lengthanint,andnotanuint我一直想知道为什么.Count不是无符号整数而是有符号整数?例如,以ListView.SelectedItems.Count为例。元素个数不能小于0,为什么是signedint?如果我尝试测试是否有元素被选中,我想测试if(ListView.SelectedItems.Count==0){}但是因为它是一个有符号整数,所以我必须测试if(List

c# - 使用 GROUP BY 和 COUNT(DISTINCT) 的 LINQ to SQL

我必须执行以下SQL查询:selectanswer_nbr,count(distinctuser_nbr)fromtpoll_answerwherepoll_nbr=16groupbyanswer_nbrLINQtoSQL查询fromaintpoll_answerwherea.poll_nbr=16selecta.answer_nbr,a.user_nbrdistinct映射到以下SQL查询:selectdistinctanswer_nbr,distinctuser_nbrfromtpoll_answerwherepoll_nbr=16到目前为止,还不错。但是,当尝试对结果进行GROU

C#属性和ref参数,为什么不加糖?

我刚刚在使用C#时遇到了这个错误消息Apropertyorindexermaynotbepassedasanoutorrefparameter我知道是什么原因造成的,并快速解决了创建一个正确类型的局部变量,用它作为out/ref参数调用函数,然后将其分配回属性:RefFn(refobj.prop);变成{vart=obj.prop;RefFn(reft);obj.prop=t;}很明显,如果属性在当前上下文中不支持get和set,这将失败。为什么C#不直接为我做这件事?我能想到的唯一可能导致问题的情况是:线程异常(exception)情况对于线程,转换会影响写入发生的时间(在函数调用之

c# - 计数属性与 Count() 方法?

在处理集合时,我有两种获取对象数量的方法;Count(属性)和Count()(方法)。有谁知道主要区别是什么?我可能是错的,但我总是在任何条件语句中使用Count属性,因为我假设Count()方法对集合,其中Count必须在我“获取”之前已经分配。但这是一个猜测-我不知道如果我错了,性能是否会受到影响。编辑:出于好奇,如果集合为空,Count()会抛出异常吗?因为我很确定Count属性只返回0。 最佳答案 反编译Count()扩展方法的源代码表明它测试对象是否是一个ICollection(泛型或其他),如果是,则简单地返回底层Cou

c# - 属性或索引器不能作为 out 或 ref 参数传递

我收到上述错误并且无法解决。我用谷歌搜索了一下,但无法摆脱它。场景:我有一个BudgetAllocate类,它的属性是budget,它是double类型。在我的dataAccessLayer中,在我的一个类(class)中,我正在尝试这样做:double.TryParse(objReader[i].ToString(),outbd.Budget);这是抛出这个错误:Propertyorindexermaynotbepassedasanoutorrefparameteratcompiletime.我什至试过这个:double.TryParse(objReader[i].ToString(