草庐IT

mainPanel_ref

全部标签

c# - 是否可以将属性作为 "out"或 "ref"参数传递?

如果不能,我可以将属性作为“out”或“ref”参数传递吗?为什么不呢?例如Personp=newPerson();...publicvoidTest(outp.Name); 最佳答案 很抱歉回答很简短,但是不行,C#语言规范不允许这样做。查看此answer到另一个问题,看看当你尝试时会发生什么。它还说明了为什么您不应该将该属性设置为公共(public)字段来绕过限制。希望对你有帮助编辑:你问为什么?您将变量传递给out或ref参数,您实际上传递的是变量的地址(或内存中的位置)。在函数内部,编译器知道变量的实际位置,并获取值并将值写

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#属性和ref参数,为什么不加糖?

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

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

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

c# - 引用分配是原子的,那么为什么需要 Interlocked.Exchange(ref Object, Object) 呢?

在我的多线程asmxWeb服务中,我有一个我自己的类型SystemData的类字段_allData,它由几个List组成和Dictionary标记为volatile.系统数据(_allData)偶尔会刷新一次,我通过创建另一个名为newData的对象来实现。并用新数据填充它的数据结构。完成后,我只需分配privatestaticvolatileSystemData_allDatapublicstaticboolLoadAllSystemData(){SystemDatanewData=newSystemData();/*fillnewDatawithup-to-datedata*/..

c# - C# 中的引用类型变量 "ref"有什么用?

我知道如果我传递一个值类型(int、struct等)作为参数(没有ref关键字),该变量的副本被传递给该方法,但如果我使用ref关键字,传递的是对该变量的引用,而不是新的引用。但是对于引用类型,比如类,即使没有ref关键字,引用也会传递给方法,而不是副本。那么ref关键字和引用类型有什么用呢?举个例子:varx=newFoo();以下有什么区别?voidBar(Fooy){y.Name="2";}和voidBar(refFooy){y.Name="2";} 最佳答案 您可以使用y更改foo指向的内容:Foofoo=newFoo("1

c# - 何时使用 in vs ref vs out

前几天有人问我什么时候应该使用参数关键字out而不是ref。虽然我(我认为)理解ref和out关键字(一直是askedbefore)之间的区别,但最好的解释似乎是ref==in和out,我应该始终使用out而不是的一些(假设或代码)示例引用。既然ref更通用,为什么还要使用out?它只是语法糖吗? 最佳答案 除非你需要ref,否则你应该使用out。当数据需要编码时,它会产生很大的不同,例如到另一个过程,这可能是昂贵的。因此,您希望避免在方法未使用初始值时编码初始值。除此之外,它还向声明或调用的读者显示初始值是相关的(并可能保留)还是

c# - .NET 中 ref 和 out 参数的区别

这个问题在这里已经有了答案:What'sthedifferencebetweenthe'ref'and'out'keywords?(27个答案)关闭4年前。.NET中的ref和out参数有什么区别?在什么情况下一个比另一个更有用?一个可以使用而另一个不能使用的代码片段是什么?