ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。总结起来,他们有如下语法区别:
1、ref传进去的参数必须在调用前初始化,out不必,即:
int i;
SomeMethod( ref i );//语法错误
SomeMethod( out i );//通过2、ref传进去的参数在函数内部可以直接使用,而out不可:
public void SomeMethod(ref int i)
{
int j=i;//通过
//...
}
public void SomeMethod(out int i)
{
int j=i;//语法错误
}
3、ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值。
总结:
应该说,系统对ref的限制是更少一些的。out虽然不要求在调用前一定要初始化,但是其值在函数内部是不可见的,也就是不能使用通过out传进来的值,并且一定要赋一个值。也就是说函数承担初始化这个变量的责任。
给你个简单的解释说法吧。虽然不完全对。但是我可以让你理解OUT有什么作用。呵呵
举个例子。每个方法只能有一个返回值。但是你想有多个返回值,呵呵。OUT就起作用了啊。比如分页,不光返回数据源,还要返回总记录数
如:
public DataSet getData(out int count)
{
dataset ds=bll.getdata(10,20); 获取第11条到第20条数据。。但是不可能只显示 共有10条记录吧。呵呵。那么我们要用out了
int rcount=bll.GetCount();//比方说这个是取总记录数的。
count=rcount;
return ds;
}
显示的时候
public void showdata()
{
int count=0;
gridview1.datasource=getData(out count);
gridview1.databind();
label1.text="共有"+count.tostring()+"条记录";
}
1、ref传进去的参数必须在调用前初始化,out不必,即:
int i;
SomeMethod( ref i );//语法错误
SomeMethod( out i );//通过2、ref传进去的参数在函数内部可以直接使用,而out不可:
public void SomeMethod(ref int i)
{
int j=i;//通过
//...
}
public void SomeMethod(out int i)
{
int j=i;//语法错误
}
3、ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值。
总结:
应该说,系统对ref的限制是更少一些的。out虽然不要求在调用前一定要初始化,但是其值在函数内部是不可见的,也就是不能使用通过out传进来的值,并且一定要赋一个值。也就是说函数承担初始化这个变量的责任。
给你个简单的解释说法吧。虽然不完全对。但是我可以让你理解OUT有什么作用。呵呵
举个例子。每个方法只能有一个返回值。但是你想有多个返回值,呵呵。OUT就起作用了啊。比如分页,不光返回数据源,还要返回总记录数
如:
public DataSet getData(out int count)
{
dataset ds=bll.getdata(10,20); 获取第11条到第20条数据。。但是不可能只显示 共有10条记录吧。呵呵。那么我们要用out了
int rcount=bll.GetCount();//比方说这个是取总记录数的。
count=rcount;
return ds;
}
显示的时候
public void showdata()
{
int count=0;
gridview1.datasource=getData(out count);
gridview1.databind();
label1.text="共有"+count.tostring()+"条记录";
}
发表评论
-
like参数查询
2011-05-24 14:45 825//在做项目的时候遇到使用like参数查询 public ... -
母版页的嵌套
2011-05-24 14:41 3508在嵌套母版页时遇到的问题 在嵌套母版页的时候,最 ... -
删除指定路径的文件
2011-05-04 17:59 868string path = this.Server.Map ... -
获取表单的值
2011-04-18 16:22 679//获取单个表单的值 Request.Form[&quo ... -
C# 正则 获取 Img Src路径
2011-04-15 14:15 5214string str = "<form ... -
C#记录Cookie
2011-04-08 13:44 1112//以一维的形式记录Cookie Response.Co ... -
取机器名, CPU号 硬盘号 网卡号 串口
2011-04-07 21:41 1135//取机器名 public string G ... -
Asp.net获取用户真实Ip地址
2011-04-01 10:39 10141/// <summary> ... -
数据库连接字符串
2011-03-29 21:19 665<connectionStrings> ... -
一般处理程序(ashx)使用Session
2011-03-28 17:18 1288using System; using System.C ... -
实现退出功能
2011-03-21 10:49 1009<a href="login.aspx?a ... -
后台添加Css或Js文件
2011-03-15 15:57 713protected void Page_Load(obje ... -
验证码的比较
2011-03-14 18:24 894[align=left] /// <summary&g ... -
利用ListItem[]给DropDownList绑定数据
2011-03-14 17:41 2862protected void Page_Load(ob ... -
C#生成GUID代码
2011-02-13 19:57 989Response.Write(System.Guid.Ne ... -
ASP.NET会话(Session)保存模式
2011-02-01 20:43 1801ASP.NET会话(Session)保 ... -
Asp.net相对路径与绝对路径
2011-01-28 22:15 1449[size=medium] 1.Request.Applic ... -
判断数据库表中字段是否为空
2011-01-26 22:46 1423[size=medium] string strSql = ... -
类型转换集合
2011-01-25 23:30 764将空字符串转换为Null值 string str = & ... -
C# 各种字符串格式
2011-01-25 22:45 848[size=medium] 1. C#的Strin ...
相关推荐
out 关键字会导致参数通过引用来传递。 这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。 若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字
C#中关键字ref与out的区别 C#中关键字ref与out的区别是非常重要的...因此,我们可以看到,ref和out关键字的区别在于,ref要求变量必须在传递之前进行初始化,而out关键字不需要初始化,可以在方法中对参数进行初始化。
### ASP.NET中Ref与Out关键字的区别分析 #### 类型介绍 在面向对象编程(OOP)语言中,通常存在两种基本的数据类型:值类型和引用类型。这两种类型的处理方式不同,尤其是在涉及到参数传递时。 ##### 值类型 值...
与 `ref` 类似,`out` 也用于引用传递,但它允许方法返回多个值。不同于 `ref`,`out` 参数在方法调用时不需预先初始化。实际上,`out` 参数的职责在于方法内部,它必须在方法的主体中被赋值。这使得 `out` 成为一种...
4. `out` 关键字:与`ref`类似,`out`也用于按引用传递,但不同的是,`out`参数在方法调用时不必初始化。`out total`表示`total`的值将在方法内部被赋值,并且方法必须为`out`参数提供一个值。在`Average`方法中,`...
与`ref`类似,`out`也使得方法能够直接修改传递给它的参数值。但是,`out`参数有一些关键的区别: 1. **调用方法时不需要事先初始化参数**:这是因为`out`参数的预期用途是作为方法的返回值的一部分,而不是用来...
- **作用**:`out` 关键字也用于按引用传递参数,但与 `ref` 的主要区别在于,方法定义时无需确保参数已初始化。 - **要求**:`out` 参数在方法内部必须被初始化,因为它是方法的输出。 - **使用场景**:当方法...
1. `out`关键字与`ref`类似,也是通过引用传递参数,但不同之处在于`out`参数不必在传递前初始化。 2. 被`out`标记的参数在方法内部必须被赋值,这使得`out`成为返回多个值的有效手段。 3. 同样,`out`也需要在方法...
### C#中`ref`与`out`的关键区别 在C#编程语言中,方法的参数传递机制提供了多种方式来处理方法内部对外部变量的访问和修改。这其中包括了通过值(by value)和通过引用(by reference)两种基本模式。通过引用传递...
在C#编程中,`ref`和`out`关键字是用来传递参数的重要机制,它们允许函数修改传入变量的值。这两个关键字在处理数组对象时也具有特殊的应用,因为数组在C#中被视为对象,拥有自己的引用。理解这些关键字在数组上下文...
### C# 基础:ref与out的区别 在C#编程语言中,`ref` 和 `out` 是两个非常重要的关键字,它们主要用于传递参数,特别是在函数调用时需要修改方法外部变量的情况下。掌握 `ref` 和 `out` 的正确使用方式对于编写高...
`out` 关键字也允许通过引用传递参数,但它与 `ref` 有一个关键的区别:`out` 参数必须在方法内部被赋值,并且在调用方法时可以不需要初始化该变量。 **示例代码解析**: ```csharp int c; AMethod(in a, ref b, ...
`out`关键字也允许将参数通过引用传递到方法中,但它与`ref`有一些重要的区别: 1. **初始化**:与`ref`不同,使用`out`参数的变量在传递前不必被初始化。 2. **默认值**:当使用`out`参数时,如果没有为该参数赋值...
- **调用者必须显式使用out关键字**:与`ref`一样,在调用带有`out`参数的方法时,调用者也必须使用`out`关键字来传递参数。此外,方法必须为每个`out`参数赋值,否则将导致编译错误。 ##### 示例代码: ```csharp...
因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? MSDN: ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该...
在C#编程语言中,`ref`和`out`是两个关键字,它们都用于方法参数传递,但有各自独特的用途和规则。理解并熟练运用`ref`和`out`是提高C#编程效率的关键。 首先,`ref`关键字用于当需要在方法内部修改传入的参数值,...
在C#编程语言中,`out`和`ref`都是用于方法参数传递的关键字,它们允许函数修改调用者提供的变量值。虽然这两个关键字看似相似,但它们在使用上有着本质的区别,理解这些区别对于编写高效、清晰的代码至关重要。 ...
其次,`out`关键字与`ref`相似,也是按引用传递参数,但它有一个重要的区别:`out`参数在方法被调用时不需初始化,而且方法有责任在执行过程中为其赋值。`out`通常用于当方法需要返回多个值时。一个方法可以有多个`...