的在
,出
,裁判
关键字是c#中广泛使用的关键字。它们允许我们为数据类型和方法创建更好的抽象,从而使我们的代码更具可读性和可维护性。
这两个在
关键字和出
关键字允许您通过引用将参数传递给方法。的出
关键字允许您更改参数值,而在
关键字不允许您更改它们。
您可以使用裁判
关键字通过引用传递输入和输出参数,允许被调用的方法在需要时更改这些参数。通过引用传递参数,裁判
关键字确保对方法内参数的更改也反映到方法外部。
在本文中,我们将更详细地探讨这些关键字,以便您了解在使用c#时如何以及何时使用它们。要使用本文中提供的代码示例,您应该在系统中安装Visual Studio 2022预览版。如果你还没有副本,也可以点击此处下载Visual Studio 2022预览版.
在Visual Studio中创建控制台应用程序项目
首先,让我们在Visual Studio中创建一个. net Core控制台应用程序项目。假设您的系统中已经安装了Visual Studio 2022预览版,请按照下面概述的步骤在Visual Studio中创建一个新的. net Core控制台应用程序项目。
- 启动Visual Studio 2022预览IDE。
- 点击“创建新项目”。
- 在“创建新项目”窗口中,选择“控制台应用程序(。NET Core)”。
- 单击Next。
- 在接下来显示的“Configure your new project”窗口中,指定新项目的名称和位置。
- 单击Next
- 在接下来显示的“附加信息”窗口中,指定。net 7作为你想要使用的。net版本。
- 单击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参数的值。
图1。不!的在
关键字不允许更改参数值。
c#中的out关键字
的出
关键字的工作方式与ref关键字大致相同;它允许您使用引用传递参数,并更改这些参数的值。的出
关键字与裁判
关键字,除了裁判
需要在传递变量之前初始化变量。当与出
关键字,方法签名和调用方法都必须显式指定出
关键字。
例如,一个方法可能需要同时返回成功代码和值。通过为变量使用输出参数(例如,retValue
),该方法可以直接返回成功代码,并使用输出参数作为值。
方法的代码片段说明了如何使用出
关键字。
int数;OutDemo(数量);Console.WriteLine(数量);//该值现在是100 void OutDemo(out int number) {number = 100;}
当您执行上面的代码时,值100将显示在控制台中。
in, out和ref的限制
您不能使用在
,出
,裁判
异步方法或迭代器方法中的关键字,例如那些使用收益回报
或产量突破
声明。此外,不能使用在
扩展方法的第一个参数中的关键字,除非参数为结构体
.
值得注意的是,关键字在
,裁判
,出
在确定重载时,不要构成方法签名的一部分。因此,您不能重载仅与这些关键字有关的签名不同的方法。
换句话说,如果有两个同名的方法,但其中一个接受整数作为在
参数,另一个接受一个整数作为出
参数,则您的代码根本无法编译。