如何在。net核心中使用in, out和ref关键字

利用in、out和ref关键字将参数传递给. net中的c#方法,使代码更易于阅读和维护。

  • 在Facebook上分享
  • 在推特上分享
  • 在LinkedIn上分享
  • 在Reddit上分享
  • 通过电子邮件分享
  • 印刷资源
双胞胎镜子反射复制模拟人拿着镜子重现码头海滩海洋
盖蒂图片社

,裁判关键字是c#中广泛使用的关键字。它们允许我们为数据类型和方法创建更好的抽象,从而使我们的代码更具可读性和可维护性。

这两个关键字和关键字允许您通过引用将参数传递给方法。的关键字允许您更改参数值,而关键字不允许您更改它们。

您可以使用裁判关键字通过引用传递输入和输出参数,允许被调用的方法在需要时更改这些参数。通过引用传递参数,裁判关键字确保对方法内参数的更改也反映到方法外部。

在本文中,我们将更详细地探讨这些关键字,以便您了解在使用c#时如何以及何时使用它们。要使用本文中提供的代码示例,您应该在系统中安装Visual Studio 2022预览版。如果你还没有副本,也可以点击此处下载Visual Studio 2022预览版

在Visual Studio中创建控制台应用程序项目

首先,让我们在Visual Studio中创建一个. net Core控制台应用程序项目。假设您的系统中已经安装了Visual Studio 2022预览版,请按照下面概述的步骤在Visual Studio中创建一个新的. net Core控制台应用程序项目。

  1. 启动Visual Studio 2022预览IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,选择“控制台应用程序(。NET Core)”。
  4. 单击Next。
  5. 在接下来显示的“Configure your new project”窗口中,指定新项目的名称和位置。
  6. 单击Next
  7. 在接下来显示的“附加信息”窗口中,指定。net 7作为你想要使用的。net版本。
  8. 单击Create。

这将在Visual Studio 2022预览版中创建一个新的。net Core 7控制台应用程序项目。我们会用这个项目来,裁判本文后续部分中的关键字。

c#中的ref关键字

在c#中,通过引用传递对象或变量是通过使用裁判关键字。通常,当一个变量被发送到一个方法时,该变量的值被复制到该方法中,以便它可以被进一步使用。

然而,如果我们使用裁判若要以引用方式传递变量,则不会将变量复制到方法中。相反,该方法遵循引用来访问原始变量。因此,被调用方法对变量值所做的任何更改都将对原始变量进行更改。

应该注意的是,必须指定裁判关键字在方法签名中和调用方法的地方。考虑下面的代码:

void RefDemo(ref int refParameter) {refParameter = refParameter + 1;} int number = 1;RefDemo (ref);Console.WriteLine(数量);

当您执行上述代码时,数字2将显示在控制台中。这是因为变量调用数量已传递的引用和值refParameter在?里增加了1RefDemo方法。

方法的代码片段演示了如何使用裁判关键字与对象。

void RefDemo(ref int refParameter) {refParameter = refParameter + 1;} int number = 1;RefDemo (ref);Console.WriteLine(数量);

当您执行上述代码时,文本“Hello World”将显示在控制台中。

这里有一个有趣的观点。如果执行下面的代码段,则RefDemo方法的引用将返回truestr而且refParameter对象是一样的。

string str = "Hello";string str = "Hello";bool RefDemo(ref string refParameter) {refParameter = "Hello World";return ReferenceEquals(str, refParameter);} bool isEqual = RefDemo(ref str);Console.WriteLine (isEqual ?“两个参照点相等”:“两个参照点不相等”);

c#中的in关键字

关键字用于指定方法参数通过引用传递,但被调用的方法不能修改参数。这对于未被调用方法修改,但必须通过引用传递以便调用方法访问结果的参数非常有用。

图1显示了不能更改in参数的值。

关键字chsharp IDG

图1。不!的关键字不允许更改参数值。

c#中的out关键字

关键字的工作方式与ref关键字大致相同;它允许您使用引用传递参数,并更改这些参数的值。的关键字与裁判关键字,除了裁判需要在传递变量之前初始化变量。当与关键字,方法签名和调用方法都必须显式指定关键字。

例如,一个方法可能需要同时返回成功代码和值。通过为变量使用输出参数(例如,retValue),该方法可以直接返回成功代码,并使用输出参数作为值。

方法的代码片段说明了如何使用关键字。

int数;OutDemo(数量);Console.WriteLine(数量);//该值现在是100 void OutDemo(out int number) {number = 100;}

当您执行上面的代码时,值100将显示在控制台中。

in, out和ref的限制

您不能使用,裁判异步方法或迭代器方法中的关键字,例如那些使用收益回报产量突破声明。此外,不能使用扩展方法的第一个参数中的关键字,除非参数为结构体

值得注意的是,关键字裁判,在确定重载时,不要构成方法签名的一部分。因此,您不能重载仅与这些关键字有关的签名不同的方法。

换句话说,如果有两个同名的方法,但其中一个接受整数作为参数,另一个接受一个整数作为参数,则您的代码根本无法编译。

版权所有©2022 金宝搏体育下载IDG通信有限公司

如何选择低代码开发平台