社区
C#
帖子详情
请问C#语法问题:方法参数中有out和in关键字是什么意思?
屡败屡战数马援
2003-11-10 04:56:24
比如方法定义
public bool FunctionA(string Str,out int Back)
{
// ....
}
我发现在方法参数中有的带in,有的带out,不明白什么意思。我在vs.net带的C#语言参考里面没有找到,请教高手解答。谢谢!
...全文
511
4
打赏
收藏
请问C#语法问题:方法参数中有out和in关键字是什么意思?
比如方法定义 public bool FunctionA(string Str,out int Back) { // .... } 我发现在方法参数中有的带in,有的带out,不明白什么意思。我在vs.net带的C#语言参考里面没有找到,请教高手解答。谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ball_24
2003-11-10
打赏
举报
回复
大哥,最好的老师就是Help
brightheroes
2003-11-10
打赏
举报
回复
同楼上
gshope
2003-11-10
打赏
举报
回复
另外一个是int,不是in,你看错了。
gshope
2003-11-10
打赏
举报
回复
out请参见
C# 关键字 | 方法参数
方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。
若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。
不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。
属性不是变量,不能作为 out 参数传递。
如果两个方法的声明仅在 out 的使用方面不同,则会发生重载。不过,无法定义仅在 ref 和 out 方面不同的重载。例如,以下重载声明是有效的:
class MyClass
{
public void MyMethod(int i) {i = 10;}
public void MyMethod(out int i) {i = 10;}
}
而以下重载声明是无效的:
class MyClass
{
public void MyMethod(out int i) {i = 10;}
public void MyMethod(ref int i) {i = 10;}
}
有关传递数组的信息,请参见使用 ref 和 out 传递数组。
示例
// cs_out.cs
using System;
public class MyClass
{
public static int TestOut(out char i)
{
i = 'b';
return -1;
}
public static void Main()
{
char i; // variable need not be initialized
Console.WriteLine(TestOut(out i));
Console.WriteLine(i);
}
}
输出
-1
b
请参见
C# 关键字 | 方法参数
【
C#
】
C#
虚
方法
和抽象
方法
的区别,重写和重载的区别,
参数
修饰符(ref、out、in、params)
在继承抽象类时,如果抽象类中含有(一个或一个以上的)抽象
方法
,由于抽象
方法
在基类中只有
方法
并没有
方法
体,可以理解为当派生类继承基类中的抽象
方法
时,必须去补充基类中抽象
方法
缺乏的
方法
体(即重写抽象
方法
)速记:因为在继承含有虚
方法
的类时,虚
方法
已经在基类中写过
方法
体,可以理解为基类中已经写过一次的
方法
在派生类中可以但是没有必要去重写虚
方法
(仅有需要的情况下再去重写)
方法
内部是只读的(即在
方法
内部是不能够对其进行修改的)必须在
方法
内部进行修改并且会影响到原数值。基类中已定义的虚
方法
或抽象
方法
的新实现。
C#
关键字
:in、out、ref、in T、out T、[In]、[Out]这些你都知道多少?
请看以下的P/Invoke调用,我们通过调用Windows C++的Api弹出对话框,其中,输入
参数
我们是可以用[In]
关键字
修饰的,这个通常情况下可以忽略不写。我们可以将ref
关键字
去掉,重新执行,可以看到 以下执行效果:执行
方法
前后打印的结果都是3,在
方法
中对形参的修改,并没有反应到调用者变量p。out
关键字
同样也是引用传递,和ref不同的是,它可以将
参数
直接返回,所以out
关键字
的使用场景主要是:需要
参数
返回多个值。我们将上面的代码中in
关键字
,改为ref
关键字
,并且在
方法
内部修改形参的值。
C#
:in、out、ref
关键字
关键字
会导致按引用传递
参数
,但确保未修改
参数
。它让形参成为实参的别名,这必须是变量。2)不要混淆通过引用传递的概念与引用类型的概念。ref主要对值类型会有较大的影响,其修饰函数形参与in和out没有很大区别。1)在某些情况下,按引用访问值可避免潜在的高开销复制操作,从而提高性能。当in修饰基本数据类型时,我们无法修改基本数据类型的值,只能读取。引用类型就比较灵活了,其是可以修改引用类型的成员变量的值的。形参的实参必须先经过初始化,然后才能传递。形参不同,在传递之前,不需要显式初始化该形参的实参。...
C#
关键字
:in、out、ref、in T、out T、[In]、[Out]
请看以下的P/Invoke调用,我们通过调用Windows C++的Api弹出对话框,其中,输入
参数
我们是可以用[In]
关键字
修饰的,这个通常情况下可以忽略不写。我们可以将ref
关键字
去掉,重新执行,可以看到 以下执行效果:执行
方法
前后打印的结果都是3,在
方法
中对形参的修改,并没有反应到调用者变量p。out
关键字
同样也是引用传递,和ref不同的是,它可以将
参数
直接返回,所以out
关键字
的使用场景主要是:需要
参数
返回多个值。我们将上面的代码中in
关键字
,改为ref
关键字
,并且在
方法
内部修改形参的值。
C#
学习笔记-
方法
参数
params、ref和in、out
目录params用法ref用法按引用传递
参数
引用返回值引用局部变量in用法特殊注意点优势out用法版本变迁信息其他ref、in和out三者异同
方法
重载
C#
中ref和out
关键字
的应用以及区别。 官方文档 编写安全有效的
C#
代码 params 指定此
参数
采用可变数量的
参数
。 in 指定此
参数
由引用传递,但只由调用
方法
读取。 ref 指定此
参数
由引用传递,可能由调用
方法
读取或写入。 out 指定此
参数
由引用传递,由调用
方法
写入。 params 使用 params
关键字
可以指定采用数目可变的
参数
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章