jjzjj

ref-parameters

全部标签

c# - C# 中的 ref 和 out 参数不能被标记为变体

声明是什么意思?FromhererefandoutparametersinC#andcannotbemarkedasvariant.1)是否意味着以下不能做。publicclassSomeClass:IVariant{publicvirtualRDoSomething(refAargs){returnnull;}}2)或者这是否意味着我不能拥有以下内容。publicdelegateRReader(Aarg,strings);publicstaticvoidAssignReadFromPeonMethodToDelegate(refReaderpReader){pReader=ReadF

c# - 为什么在匿名方法中不允许使用 out 参数?

这不是Callingamethodwithreforoutparametersfromananonymousmethod的骗局我想知道为什么out参数在匿名方法中是不允许的。不允许ref参数对我来说更有意义,但是out参数,就没那么多了。你对此有何看法 最佳答案 在某些方面,这是一个骗局。Out参数是ref参数。C#语言使用的值只是一个额外的属性。不允许它们的原因与ref参数完全相同。这里的问题源于在匿名方法中使用在匿名方法之外声明的值的效果。这样做会捕获lambda中的值,并且出于必要而任意延长其生命周期,使其超出当前函数的生命周

C#,将一个 bool 复制到另一个(通过 ref,而不是 val)

我在这里的一堵砖墙边。是否可以将一个bool复制到另一个bool的ref。考虑这段代码。..boola=false;boolb=a;b现在是一个完全独立的bool值,值为false。如果我随后更改a,它将不会影响b。是否可以通过ref使a=b?我该怎么做?非常感谢 最佳答案 没有。由于bool是值类型,它总是按值复制。最好的选择是将你的bool包装在一个类中——这将赋予它引用类型语义:publicclassBoolWrapper{publicboolValue{get;set;}publicBoolWrapper(boolvalue

c# - ref 参数有什么不好?

我遇到了一种情况,我认为只能通过使用ref参数来解决。但是,这意味着当我只需要5%的时间由ref参数提供的功能时,更改方法以始终接受ref参数。这让我觉得“哇,疯了,必须找到另一种方法”。我是不是很傻?ref参数会导致什么样的问题?编辑要求提供更多详细信息,我认为它们与我的要求并不完全相关,但我们开始吧。我想保存一个新实例(它将使用稍后可能使用的ID更新)或检索一个与某些逻辑匹配的现有实例并更新它,保存它然后将新实例的引用更改为指向现有的。代码可能会更清晰:protectedoverridevoidBeforeSave(Logentity){varnewLog=entity;varex

c# - 如何保存 ref 变量供以后使用?

所以这有效..publicMyClass(refAppleapple){apple=newApple("Macintosh");//Worksfine}但是有没有可能做这样的事情呢?privateApplemyApple;publicMyClass(refAppleapple){myApple=apple;}publicvoidModifyApple(){myApple=newApple("Macintosh");//doesnotchangetheinputvariablelikethefirstexampledid}当ref变量被复制到成员变量myApple时,它似乎失去了它的“r

c# - 如何修复 'T' 是 'type parameter' 但被用作 'variable' 编译错误

我需要检查泛型类型参数T是MyEntity还是它的子类。下面的代码会导致这个编译器错误:'T'isa'typeparameter'butisusedlikea'variable'如何修复?publicclassMyEntity{}staticvoidTest(){//Error34'T'isa'typeparameter'butisusedlikea'variable'if(TisMyEntity){}} 最佳答案 您可以使用IsAssignableFromType上的方法检查是否有一个Type可以分配给另一个。if(typeof(

c# - "Possible multiple enumeration of IEnumerable"与 "Parameter can be declared with base type"

在Resharper5中,以下代码导致list出现警告“Parametercanbedeclaredwithbasetype”:publicvoidDoSomething(Listlist){if(list.Any()){//...}foreach(variteminlist){//...}}在Resharper6中,情况并非如此。但是,如果我将方法更改为以下内容,我仍然会收到该警告:publicvoidDoSomething(Listlist){foreach(variteminlist){//...}}原因是,在这个版本中,list只枚举一次,所以改成IEnumerable不会自动

c# - 使用 Web API 和 JSON.NET 序列化对象时防止 $id/$ref

我似乎无法阻止WebAPI/JSON.NET在序列化对象时使用Newtonsoft.Json.PreserveReferencesHandling.Objects。换句话说,尽管使用了以下设置,但$id/$ref始终在序列化对象中使用:publicclassMvcApplication:System.Web.HttpApplication{protectedvoidApplication_Start(){WebApiConfig.Register(GlobalConfiguration.Configuration);}}publicstaticclassWebApiConfig{pub

c# - 属性、索引器或动态成员访问不能作为 out 或 ref 参数传递

这个问题在这里已经有了答案:C#propertyandrefparameter,whynosugar?(9个回答)Apropertyorindexermaynotbepassedasanoutorrefparameter(9个回答)关闭9年前。您好,我无法弄清楚这一点。我有这些结构和类。structCircle{...}classPainting{Listcircles;publicListcircles{get{returncircles;}}}我正在尝试使用以下代码从绘画类外部修改其中一个圆圈:MutatePosition(refpainting.Circles[mutationI

c# - MSDeploy - 允许参数在 parameters.xml 中是可选的/为空的

我正在使用msdeploy部署asp.net-mvcWeb应用程序通过teamcity.我正在使用paramaters.xml文件来操纵我的应用程序的web.config,具体应用settings部分。我有一些设置,其中只有对特定环境具有值才有效,其余时间该值应为空白(即,Property应仅在Production上具有值)。但是,当我不指定一个值时,MSDeploy给了我这个异常:Microsoft.Web.Deployment.DeploymentException:The'facebookUserToken'argumentcannotbenullorempty.atMicros