首页 > 后端开发 > C#.Net教程 > C# 输出参数

C# 输出参数

WBOY
发布: 2024-09-03 15:29:34
原创
857 人浏览过

out是C#中的关键字,用于将参数作为引用类型传递给方法。作为输出参数传递给方法的变量在传递给方法调用之前不需要声明或初始化。在控件离开被调用方法之前以及被调用方法向调用方法返回任何值之前,被调用方法需要为 out 参数的变量赋值。可以将多个输出参数传递给一个方法,并且该方法返回多个值。

语法及解释:

使用 out 参数调用该方法时,语法如下:

Method_name(out data_type variable_name);
登录后复制

这里,Method_name 是任何用户定义的方法名称,'out' 是关键字,用于表示传递给方法的变量是输出参数,data_type 可以是变量的任何数据类型,variable_name 是用户定义的变量名称。

调用方法的语法如下:

access_specifier return_type Method_name(out data_type variable_name);
登录后复制

这里,access_specifier 可以是 C# 支持的五个访问说明符中的任何访问说明符,例如 public 或 private。然后,return_type 是该方法返回的数据类型,后跟方法名称和“out”参数列表。

“out”参数在 C# 中如何工作?

在 C# 中,“out”关键字的作用类似于“ref”和“in”关键字。 'out' 和 'ref' 参数之间的区别在于,'out' 参数变量在传递给方法之前不需要初始化,用户可以在方法的参数列表中声明 'out' 参数变量而不是单独声明它,这称为“out”参数的内联声明,而“ref”参数变量需要在传递给方法之前初始化。可以在同一代码块中访问内联声明的“out”参数。

示例#1

代码:

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main(string[] args)
{
//inline declaration of 'out' parameter
Display(out int num);
Console.WriteLine("Value of variable 'num': {0}", num);
Console.ReadLine();
}
public static void Display(out int a)
{
//need to assign value
a = 10;
a += a;
}
}
}
登录后复制

输出:

C# 输出参数

  • 现在,‘out’和‘in’关键字的区别在于,‘out’参数值可以在被调用方法内部修改,而‘in’参数值不能在被调用方法内部修改。
  • 一个方法可以有多个“out”参数,例如:Display(out x, out y);
  • 要使用“out”参数,用户需要在方法定义和调用方法中显式使用“out”关键字。同时,方法定义和调用中的“out”参数的名称不必相同。
  • “out”参数通过引用传递给方法,因此它们不会在内存中创建新的存储位置,并使用方法调用中变量参数占用的相同存储位置。由于使用“out”的方法,参数可以返回多个值,因此可以帮助用户从被调用的方法中获取多个处理后的值。但在方法向调用方法返回任何值之前,必须为“out”参数分配方法中的一些值。
  • 我们不能在所有类型的方法中使用“out”参数,就像我们不能在使用“async”修饰符定义的异步方法中使用“out”参数一样,我们也不能在“iterator”方法中使用“out”参数由“yield return”或“yield break”语句组成。由于属性不是变量,因此我们不能将它们作为“输出”参数传递给方法。
  • ‘out’参数可以使用泛型类型来定义,以表明该类型参数是协变的。除此之外,“out”参数在 C# 中不同数据类型的 TryParse() 方法中使用。 TryParse() 方法返回一个布尔值,该值指定成功或失败,成功时,结果由“out”参数给出。

示例#2

代码:

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main(string[] args)
{
string str = "123456";
int num;
//if ‘canParse’ is true; the result of conversion will be stored in ‘num’
bool canParse = Int32.TryParse(str, out num);
if (canParse)
Console.WriteLine(num);
else
Console.WriteLine("Could not be parsed.");
Console.ReadLine();
}
}
}
登录后复制

输出:

C# 输出参数

C# 输出参数示例

以下是 C# 输出参数的示例:

示例#1

示例显示将多个“out”参数传递给方法,然后该方法返回多个值。

代码:

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main()
{
//declaring variables without assigning values
float area, perimeter;
//passing multiple variables to a method using 'out' keyword
Calculate(5, 10, out area, out perimeter);
//displaying the result
Console.WriteLine("The area of rectangle is: {0}", area);
Console.WriteLine("The perimeter of rectangle is: {0}", perimeter);
Console.ReadLine();
}
//method taking length & breadth & it will return area and perimeter of rectangle
public static void Calculate(int length, int breadth, out float area, out float
perimeter)
{
area = length * breadth;
perimeter = 2 * (length + breadth);
}
}
}
登录后复制

输出:

C# 输出参数

示例#2

显示“out”参数内联声明的示例。

代码:

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main()
{
//in-line declaration of variables without assigning values
Calculate(out int length, out int breadth, out float area);
//displaying the values of length, breadth, and area
Console.WriteLine("Length of rectangle: " + length);
Console.WriteLine("Breadth of rectangle: " + breadth);
Console.WriteLine("Area of rectangle: " + area);
Console.ReadLine();
}
//method taking 'out' parameters and it returns multiple values
public static void Calculate(out int l, out int b, out float a)
{
l = 30;
b = 40;
a = l * b;
}
}
}
登录后复制

输出:

C# 输出参数

结论

C# 中的“out”参数允许用户通过引用方法来传递参数。用作“out”参数的变量在传递给方法之前不需要进行初始化。被调用的方法应该在返回值之前为 out 参数赋值。

以上是C# 输出参数的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板