美文网首页
36.C# out修饰符

36.C# out修饰符

作者: 技术老小子 | 来源:发表于2024-03-08 06:33 被阅读0次

摘要


out关键字会导致参数通过引用来传递。这与 ref关键字类似,不同之处在于 ref要求变量必须在传递之前进行初始化。若要使用 out参数,方法定义和调用方法都必须显式使用 out关键字。

在C#编程中,函数调用通常是通过传递参数来实现的。这些参数可以是值类型(值被复制到函数内部)或引用类型(变量指向外部对象)。引用类型的参数通常使用引用参数来传递,其中函数接受的是对变量的引用,而不是对其值的副本。

在某些情况下,使用引用参数可能会导致问题,特别是当变量需要被修改时。例如,如果在函数内部修改了传递给它的引用参数,但该参数不再在函数外部可见,那么修改可能不会影响到函数外部的代码。这是因为在函数内部修改的变量引用的是内部对象,而不是外部对象。

为了解决这个问题,C#提供了out关键字,允许函数返回一个值,并且该值必须在调用函数时显式地传递。在函数内部,out参数表示变量的值,该变量必须在函数调用之前被初始化。因此,当函数完成工作时,out参数将包含函数的输出值。

正文


一个例子,需要同时返回一个数组中的最大值,最小值,总和

static void Main(string[] args)
{
    int[] numbers = { 1, 2, 3, 4, 5, 6, 7 };
    int max = 0;
    int min = 0;
    int sum = 0;
    Values(numbers, out max, out min, out sum);
    Console.WriteLine($"最大:{max},最小:{min},合计:{sum}");
}

private static void Values(int[] numbers,out int max,out int min,out int sum)
{
    max = 0;
    min = numbers[4];
    sum = 0;
    for (int i = 0; i < numbers.Length; i++)
    {
        if (numbers[i] > max)
        {
            max = numbers[i];
        }
        if (numbers[i] < min)
        {
            min = numbers[i];
        }
        sum += numbers[i];
    }
}

image.png

一个登录的例子

static void Main(string[] args)
{
    string Name = Console.ReadLine();
    string Password = Console.ReadLine();

    string msg = "";
    bool ret = Login(Name, Password, out msg);

    Console.WriteLine($"登录:{ret},信息:{msg}");
}

private static bool Login(string name, string password, out string msg)
{
    if (name == "admin" && password == "123456")
    {
        msg = "登录成功!";
        return true;
    }
    else
    {
        msg = "登录信息不正确!";
        return false;
    }

}

image.png

相关文章

网友评论

      本文标题:36.C# out修饰符

      本文链接:https://www.haomeiwen.com/subject/topezdtx.html