这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:PassinganIDisposableobjectbyreferencecausesanerror?为什么C#不允许将变量从usingblock作为ref或out传递给函数?这是我的代码:using(Forms=newForm()){doSomthing(refs);}函数在usingblock结束之前结束,为什么C#不让我将s作为ref或out参数传递?
声明是什么意思?FromhererefandoutparametersinC#andcannotbemarkedasvariant.1)是否意味着以下不能做。publicclassSomeClass:IVariant{publicvirtualRDoSomething(refAargs){returnnull;}}2)或者这是否意味着我不能拥有以下内容。publicdelegateRReader(Aarg,strings);publicstaticvoidAssignReadFromPeonMethodToDelegate(refReaderpReader){pReader=ReadF
我在这里的一堵砖墙边。是否可以将一个bool复制到另一个bool的ref。考虑这段代码。..boola=false;boolb=a;b现在是一个完全独立的bool值,值为false。如果我随后更改a,它将不会影响b。是否可以通过ref使a=b?我该怎么做?非常感谢 最佳答案 没有。由于bool是值类型,它总是按值复制。最好的选择是将你的bool包装在一个类中——这将赋予它引用类型语义:publicclassBoolWrapper{publicboolValue{get;set;}publicBoolWrapper(boolvalue
我遇到了一种情况,我认为只能通过使用ref参数来解决。但是,这意味着当我只需要5%的时间由ref参数提供的功能时,更改方法以始终接受ref参数。这让我觉得“哇,疯了,必须找到另一种方法”。我是不是很傻?ref参数会导致什么样的问题?编辑要求提供更多详细信息,我认为它们与我的要求并不完全相关,但我们开始吧。我想保存一个新实例(它将使用稍后可能使用的ID更新)或检索一个与某些逻辑匹配的现有实例并更新它,保存它然后将新实例的引用更改为指向现有的。代码可能会更清晰:protectedoverridevoidBeforeSave(Logentity){varnewLog=entity;varex
所以这有效..publicMyClass(refAppleapple){apple=newApple("Macintosh");//Worksfine}但是有没有可能做这样的事情呢?privateApplemyApple;publicMyClass(refAppleapple){myApple=apple;}publicvoidModifyApple(){myApple=newApple("Macintosh");//doesnotchangetheinputvariablelikethefirstexampledid}当ref变量被复制到成员变量myApple时,它似乎失去了它的“r
我似乎无法阻止WebAPI/JSON.NET在序列化对象时使用Newtonsoft.Json.PreserveReferencesHandling.Objects。换句话说,尽管使用了以下设置,但$id/$ref始终在序列化对象中使用:publicclassMvcApplication:System.Web.HttpApplication{protectedvoidApplication_Start(){WebApiConfig.Register(GlobalConfiguration.Configuration);}}publicstaticclassWebApiConfig{pub
这个问题在这里已经有了答案:C#propertyandrefparameter,whynosugar?(9个回答)Apropertyorindexermaynotbepassedasanoutorrefparameter(9个回答)关闭9年前。您好,我无法弄清楚这一点。我有这些结构和类。structCircle{...}classPainting{Listcircles;publicListcircles{get{returncircles;}}}我正在尝试使用以下代码从绘画类外部修改其中一个圆圈:MutatePosition(refpainting.Circles[mutationI
StackOverflow上的几个C#问题询问如何使用out或ref参数制作匿名委托(delegate)/lambda。参见,例如:CallingamethodwithreforoutparametersfromananonymousmethodWritealambdaoranonymousfunctionthatacceptsanoutparameter为此,您只需指定参数的类型,如:publicvoiddelegateD(outTp);//...Da=(outTt)=>{...};//Lambdasyntax.Db=delegate(outTt){...};//Anonymousd
我想为我正在制作的类(class)提供一个特定的链表。我希望类写入该列表(例如通过.addLast())。我应该为此使用ref关键字吗?我对在C#中在哪里使用ref和out关键字感到有些困惑,因为所有classes都是在堆上动态分配的,并且我们实际上使用指针进行大多数操作。当然,out和ref关键字对于基元和结构是有意义的。还有,如果我不直接发送列表,而是发送一个包含列表的类呢?(它是internal并且需要),我还需要使用ref吗?或者如果我在函数之间传递它,例如:voidA(refLinkedListlist){B(list);}voidB(refLinkedListlist){_
我有以下代码:classProgram{privateunsafestaticvoidSquarePtrParam(int*input){*input*=*input;}privatestaticvoidSquareRefParam(refintinput){input*=input;}privateunsafestaticvoidMain(){intvalue=10;SquarePtrParam(&value);Console.WriteLine(value);intvalue2=10;SquareRefParam(refvalue2);Console.WriteLine(value