jjzjj

c# - "ref"使用实例

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我正在努力如何在实际应用程序中使用“ref”(通过引用传递参数)。我想要一个简单且主要有意义的例子。到目前为止,我发现的所有内容都可以通过向方法添加返回类型轻松重做。有人知道吗?谢谢!

c# - 如何从抛出异常的方法中通过 out/ref 参数获取值?

此代码输出“输出值”。classP{publicstaticvoidMain(){stringarg=null;try{Method(outarg);}catch{}Console.WriteLine(arg);}publicstaticvoidMethod(outstringarg){arg="outvalue";thrownewException();}}但是这个没有。classP{publicstaticvoidMain(){object[]args=newobject[1];MethodInfomi=typeof(P).GetMethod("Method");try{mi.In

c# - 使用反射调用静态方法时如何通过ref传递参数?

我正在使用反射在对象上调用静态方法:MyType.GetMethod("MyMethod",BindingFlags.Static).Invoke(null,newobject[]{Parameter1,Parameter2});如何通过ref而不是通过值来传递参数?我假设它们默认是按值计算的。第一个参数(数组中的“Parameter1”)应该是ref,但我不知道如何以这种方式传递它。 最佳答案 对于引用参数(或C#中的out),反射会将新值复制到对象数组中与原始参数相同的位置。您可以访问该值以查看更改后的引用。publicclas

c# - 为什么可以通过ref参数修改readonly字段?

考虑:classFoo{privatereadonlystring_value;publicFoo(){Bar(ref_value);}privatevoidBar(refstringvalue){value="helloworld";}publicstringValue{get{return_value;}}}//...varfoo=newFoo();Console.WriteLine(foo.Value);//"helloworld"这如何编译,仍然有效?我不应该能够在构造函数之外为_value字段分配不同的值,因为它被标记为readonly。但是,通过ref传递给方法,确实可以操

c# - 当 .NET 反射器显示它已在 .NET Framework 中完成时,为什么我不能将属性或索引器作为 ref 参数传递?

好的,我将从.NET反射器中剪切和粘贴以演示我正在尝试做的事情:publicoverridevoidUpdateUser(MembershipUseruser){//Abunchofirrelevantcode...SecUtility.CheckParameter(refuser.UserName,true,true,true,0x100,"UserName");//Moreirrelevantcode...}这行代码直接来自.NETFramework中的System.Web.Security.SqlMembershipProvider.UpdateUser(System.Web.d

c# - 有趣的 "params of ref"功能,有什么解决方法吗?

我想知道对于值类型是否有任何类似的方法......publicstaticclassExtensionMethods{publicstaticvoidSetTo(thisBooleansource,paramsBoolean[]bools){for(inti=0;i那么这将是可能的:Booleana=true,b,c=true,d=true,e;b.SetTo(a,c,d,e);当然,这是行不通的,因为bool是值类型,所以它们作为值而不是引用传递给函数。除了将值类型包装成引用类型(通过创建另一个类)之外,还有什么方法可以在使用params修饰符时通过引用(ref)将变量传递给函数?

c# - 如何在 C# 中通过 ref 传递它?

在我的一个类(ClassA)中,我想创建另一个类(ClassB)的相关实例,为其提供对启动其创建的对象的引用。因此,我为ClassB提供了一个带有(refClassBparent)参数的构造函数。但是在ClassA中,我不能只调用varchild=newClassB(refthis)。如何实现? 最佳答案 ref关键字原因PassbyReference语义-也就是说,如果变量在被调用函数中被重新赋值,它也会在调用者中重新赋值变量.显然,这仅在变量2(可以重新赋值)作为参数直接传递时有效,如果是任意表达式则无效通过。在这种情况下,th

C# ref 关键字用法

我理解(或者至少我相信我理解)通过ref将类的实例传递给方法与不通过ref传递是什么意思。什么时候或在什么情况下应该通过ref传递类实例?对于类实例使用ref关键字是否有最佳实践? 最佳答案 我遇到过的关于输出和引用参数的最清晰的解释是......JonSkeet的。ParameterPassinginC#他没有深入探讨“最佳实践”,但如果您理解他给出的示例,就会知道何时需要使用它们。 关于C#ref关键字用法,我们在StackOverflow上找到一个类似的问题:

c# - 最佳实践 : ref parameter or return value?

其实我是做一个列表作为引用参数如下:publicstaticListListMethod(Listresult)我也看到有人这样做:publicstaticvoidListMethod(refListresult)如果我没记错的话,“my”方法也将list作为引用参数,您应该可以像“other”在他的方法中一样使用它。但在我看来,您输入一个参数,对它做一些事情并在方法返回值中返回它似乎更“干净”。支持或反对一种方法或另一种方法的任何好的论据? 最佳答案 可能您不需要使用ref-但是有区别的。通常当我看到人们使用ref作为引用类型参数

C# 'ref' 关键字,性能

如果您有一个Bitmap对象需要传递给许多方法(大约10个),最后传递给一个事件,在该事件中它最终将在使用后被处理掉,将它传递给(性能方面)是否有益这些方法中的每一个都是通过引用而不是值?按值传递,对象被复制,按引用传递它不是。(在这种情况下性能至关重要。应用程序需要尽可能快地运行。) 最佳答案 位图是一种引用类型。按值传递引用类型不会复制对象,而只是复制对对象的引用。通过引用而不是通过值传递位图不会带来性能优势。 关于C#'ref'关键字,性能,我们在StackOverflow上找到一