引用 C# 中的关键字
本文关键字:关键字 引用 | 更新日期: 2023-09-18 11:27:38
C# 支持值类型和引用类型数据类型。默认情况下,值类型变量按值传递,引用类型变量通过引用从 C# 中的一个方法传递到另一个方法。
using System;
public class Program
{
public static void Main(string[] args)
{
int myNum = 10;
// pass value type
ProcessNumber(myNum);
Console.WriteLine(myNum);
Console.ReadLine();
}
public static void ProcessNumber(int num)
{
num = 100;
}
}
输出:
10在上面的示例中,值类型变量 myNum 是按值传递的。因此,ProcessNumber() 方法中的更改不会反映到 myNum,而引用类型变量 myStr 通过引用传递给 ProcessString() 方法。因此,ProcessString() 方法中的任何更改都将得到反映。
我们有时需要通过引用传递值类型变量。那么,该怎么做呢?
C# 包含 ref 和 out 是关键字,这有助于我们通过引用将值类型变量传递给另一个函数。
下面的示例演示如何使用 ref 关键字通过引用传递值类型变量。
class Program
{
static void Main(string[] args)
{
int myNum = 10;
ProcessNumber(ref myNum); //use ref to pass the parameter by reference
Console.WriteLine(myNum);
Console.ReadLine();
}
public static void ProcessNumber(ref int num)
{
num = 100;
}
}
输出:
100正如你在上面的例子中看到的,ProcessNumber() 方法使用 ref 关键字指定了一个 int 参数,因此我们必须在调用 ProcessNumber() 方法时传递此参数时使用 ref 关键字。在作为带有 ref 关键字的参数传递之前,必须为变量赋值。
我们必须在传递给方法时指定 ref 关键字。否则,它将给出编译时错误。
static void Main(string[] args)
{
int myNum = 10;
ProcessNumber(myNum); //Compile-time Error: Must use ref keyword
Console.WriteLine(myNum);
Console.ReadLine();
}
public static void ProcessNumber(ref int num)
{
num = num + 100;
}
该方法可以包含带有 ref 参数的其他参数,如下所示。
static void Main(string[] args)
{
int myNum = 10, val=0;
ProcessNumber(ref myNum, val);
Console.WriteLine(myNum);
Console.ReadLine();
}
public static void ProcessNumber(ref int num, int val )
{
num = num + val;
}
方法重载中的引用和输出参数(Ref and Out Parameter in Method Overloading)
ref 和 out 的处理方式与编译时相同,但在运行时不同。我们不能定义一个仅在"ref"和"out"参数上不同的重载方法。下面将给出编译器错误。
interface INumberProcessor
{
void ProcessNumber(ref int k, int j);
void ProcessNumber(out int k, int j);
}
但是,我们可以定义方法重载 ref 或 out 参数,如下所示。
interface INumberProcessor
{
void ProcessNumber(int k, int j);
void ProcessNumber(ref int k, int j);
void ProcessNumber(int k, ref int j);
}
本文内容总结: