C#中的Ref参数和Out参数
来源:互联网 发布:人工智能传感器概念股 编辑:程序博客网 时间:2024/05/16 19:18
引用参数ref
当一个参数带有ref修饰符时候这个参数就是一个引用参数。引用参数本身并不创建新的存储空间的。
引用参数指向函数子句调用中作为参数给出的相关变量表征的存储空间,所以此参数的值就等于它所指向的变量。修过C的人这个应该很容易明白的。
下面是关于引用参数的赋值规则:
1、在一个变量被传递给函数子句调用中相关引用参数之前,它自身必须被明确赋值;
2、在函数子句界定的范围内,引用参数被认为是初始化过的
输出参数out:
带有out修饰符的参数为输出参数。和引用参数一样out参数本身并不创建新的存储空间,输出参数指向函数子句调用中作为参数给出的相关变量表征的存储空间。这样,此输出参数的数值总是等于它所指向的变量。
下面时关于输出参数的赋值规则:
1、在一个变量被传递给函数子句调用中相关输出参数之前,它自身不需要被明确地赋值(这个是和引用参数不同的,要特别注意);
2、在函数子句调用中,每个被传递给输出参数的变量被认为在该执行路径中已被赋值;
3、在函数子句界定的范围内,输出参数被认为是初始化过的
4、在函数子句返回之前,每一个输出参数必须被明确地赋值(这一点也要特别注意)
在结构体类型的构造函数中,关键字this就象是此结构体类型的输出参数
下面看一个列子具体来说说这个引用和输出参数:
publicstatic void RefAndOutParam(ref int refParam, out int outParam)
{
}
错误 1 控制离开当前方法之前必须对 out参数“outParam”赋值D:\_net\conv_logs_process\C_SHARP\Program.cs
2228 C_SHARP
上面就是在方法结束之前未对out参数复制,系统就会提示这种错误;
class Program
{
static void Main(string[] args)
{
int refParam = 11;
int outParam = 22;
MyClass.RefAndOutParam( refParam, outParam);
System.Console.WriteLine(refParam);
System.Console.WriteLine(outParam);
}
}
class MyClass
{
public static void RefAndOutParam(ref int refParam,out int outParam)
{
outParam = 20;
refParam = 10;
}
}
错误 1 与“C_SHARP_WBB.MyClass.RefAndOutParam(ref int,out int)”最匹配的重载方法具有一些无效参数
D:\_net\conv_logs_process\C_SHARP\Program.cs
1413 C_SHARP
错误 2 参数 1 必须使用关键字“ref”传递
D:\_net\conv_logs_process\C_SHARP\Program.cs
1437 C_SHARP
错误 3 参数 2 必须使用关键字“out”传递
D:\_net\conv_logs_process\C_SHARP\Program.cs
1447 C_SHARP
特别注意,引用带有引用参数和输出参数的方法时候,必须加上ref和out;
classProgram
{
static void Main(string[] args)
{
int refParam;
int outParam = 22;
MyClass.RefAndOutParam(refrefParam,out outParam);
System.Console.WriteLine(refParam);
System.Console.WriteLine(outParam);
}
}
class MyClass
{
public static void RefAndOutParam(ref int refParam,out int outParam)
{
outParam = 20;
refParam = 10;
}
}
错误 1 使用了未赋值的局部变量“refParam”D:\_net\conv_logs_process\C_SHARP\Program.cs
1440 C_SHARP
上面是对ref参数未被明确赋值;
classProgram
{
static void Main(string[] args)
{
int refParam = 11;
int outParam = 22;
MyClass.RefAndOutParam(refrefParam,out outParam);
System.Console.WriteLine(refParam);
System.Console.WriteLine(outParam);
}
}
class MyClass
{
public static void RefAndOutParam(ref int refParam,out int outParam)
{
outParam = 20;
refParam = 10;
}
}
上面这段代码输出
- C#中的Ref参数和Out参数
- 浅谈C#中的ref和out参数
- C# 中的 Out 和 Ref 参数
- C#的out参数和ref参数
- 关于C#中的ref和out参数的说明
- c#中的ref、out、params参数
- C# 下ref和out 参数使用
- C# 下ref和out 参数使用
- c#方法参数ref和out区别
- C#参数类型 params、out和ref
- C# ref和out参数的使用
- C# out和ref参数修饰符
- ref和out参数
- out 和ref参数
- Out和Ref参数
- ref参数和out参数
- C#中Ref/Out参数
- c# 参数 params ,ref ,out
- Android Duplicate files copied in APK
- 网易2017春招笔试(调整队形)
- 不常见的问题的处理方法
- 节流函数
- ubuntu安装软件依赖包错误
- C#中的Ref参数和Out参数
- oracle 创建.bat文件执行.sql语句 SP2-0310
- SpringCloud关于@FeignClient和Hystrix集成对http线程池监控问题
- EOS中怎样编写执行多条sql的运算逻辑
- 金典——判断直线相交
- Java 访问修饰符
- R, Groovy
- 最短路 Dijkstra
- 三个水杯(bfs)