C#--方法的参数类型
在C#中,方法的参数类型有四种:
- 值类型
- 引用类型
- 输出类型
- 数组型参数
值参数:
所谓值参数,就是利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并将此拷贝传递给该方法,这样做的结果就是被调用的方法不会修改实参的值,保证了实际值的安全,在调用方法时,如果形参的类型时值类型的话,必须保证实参的类型也是值类型的数据.
例子:
public class MyClass
{
public MyClass()
{
//
//TODO: 在此处添加构造函数逻辑
//
} public void ChangeValue(string value)
{
value = "Value is Changed!";
}
} ------------------------------------- string value = "Value";
Response.Write(value+"<br/>"); MyClass mc = new MyClass();
mc.ChangeValue(value); Response.Write(value);效果:
引用参数:
使用ref关键字可以使参数按照引用传递.在需要传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中,若使用ref关键字,则在方法定义和调用方法时都必须显式使用ref关键字.
注意ref的使用!
例子:
public class MyClass
{
public MyClass()
{
//
//TODO: 在此处添加构造函数逻辑
//
} public void ChangeValue(ref string value)
{
value = "Value is Changed!";
}
} ----------------------------- string value = "Value";
Response.Write(value+"<br/>"); MyClass mc = new MyClass();
mc.ChangeValue(ref value); Response.Write(value);效果:
输出参数:
使用out关键字来进行引用传递,这和ref关键字很累世,不同之处在于ref要求变量必须在传递之前就进行初始化,若使用out关键字,则方法定义和调用时都必须显式的使用out关键字.
例子:
public class MyClass
{
public MyClass()
{
//
//TODO: 在此处添加构造函数逻辑
//
} public void ChangeValue(out string value)
{
value = "Value is Changed!";
}
} --------------------------------- string value ; MyClass mc = new MyClass();
mc.ChangeValue(out value); Response.Write(value);效果:
数组型参数:
数组型参数就是声明params关键字,用于指定在参数数目可变处采用参数的方法参数.
在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许一个params关键字.
例子:
public class MyClass
{
public MyClass()
{
//
//TODO: 在此处添加构造函数逻辑
//
} public void ChangeValue(params string[] value)
{
foreach (string s in value)
{
HttpContext.Current.Response.Write(s + "<br/>");
}
}
} ------------------------------------------ string value1 = "Value1";
string value2 = "Value2"; MyClass mc = new MyClass();
mc.ChangeValue(value1, value2);效果:
另:
数组类型的参数:
数组类型是引用类型的数据,所以也应归类于引用类型.
public class MyClass
{
public MyClass()
{
//
//TODO: 在此处添加构造函数逻辑
//
} public void ChangeValue(string[] value)
{
value[0] = "This is Value0,Changed!";
}
} ---------------------------------------------- string[] value = { "Value1", "Value2" };
Response.Write(value[0] + "<br/>"); MyClass mc = new MyClass();
mc.ChangeValue(value); Response.Write(value[0] + "<br/>");
效果:
注意:
ref和out的区别:
传递到ref参数的参数必须最先初始化,而out的参数在传递之前不必初始化.
C#--方法的参数类型的更多相关文章
- WebApi 方法的参数类型总结。
1:[HttpGet] ①:get方法之无参数. [HttpGet] public IHttpActionResult GetStudentInfor() { List<StudentMode ...
- 为什么 Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E ?
前两天给同事做 code review,感觉自己对 Java 的 Generics 掌握得不够好,便拿出 <Effective Java>1 这本书再看看相关的章节.在 Item 24:E ...
- Java程序设计基础笔记 • 【第9章 方法与参数类型】
全部章节 >>>> 本章目录 9.1 有参数有返回值的方法 9.1.1 有参数有返回值的方法的定义和调用 9.1.2 返回值的传递过程 9.1.3 方法返回值的注意事项 9 ...
- 关于PHP的方法参数类型约束
在之前的文章PHP方法参数的那点事儿中,我们讲过关于PHP方法参数的一些小技巧.今天,我们带来的是更加深入的研究一下PHP中方法的参数类型. 在PHP5之后,PHP正式引入了方法参数类型约束.也就是如 ...
- Java在方法中定义可变参数类型
学习目标: 掌握可变参数的应用 学习内容: 1.定义 在方法中传递数组有一种更简单的方式--方法的可变参数,其本质是一个语法糖,目的是让开发者写代码更简单. 2.语法 [修饰符] 返回值类型 方法名称 ...
- CLR via C# 读书笔记---常量、字段、方法和参数
常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...
- CLR via C#深解笔记四 - 方法、参数、属性
实例构造器和类(引用类型) 构造器(constructor)是允许将类型的实例初始化为良好状态的一种特殊方法.构造器方法在“方法定义元数据表”中始终叫.ctor. 创建一个引用类型的实例时: #1, ...
- C#方法中参数ref和out的解析
一.C#方法中参数类型 有4种参数类型,有时候很难记住它们的不同特征,下图对它们做一个总结,使之更容易比较和对照. 二.C#方法中的参数 1.值参数 使用值参数,通过复制实参的值到形参的方式把数据传递 ...
- c# 方法传递参数
一.参数的使用方法: 1.值参数(Value Parameter ) 格式:方法名称(参数类型 参数名称[,参数类型 参数名称]) 2.引用参数(Reference Parameter ) 格式:方法 ...
随机推荐
- Win7下Solr4.10.1和IK Analyzer中文分词
1.下载IK中文分词压缩包IK Analyzer 2012FF_hf1,并解压到D:\IK Analyzer 2012FF_hf1: 2.将D:\IK Analyzer 2012FF_hf1\IKAn ...
- 实现DIV拖动
Ajax的到来让B/S中的客户端中开发有火了一把,网上出现了很多优秀的开源框架和UI,比较著名了有prototype,YUI,GWT等,但很多时候发现这些东西很难用到你的系统之中,有时候你的系统仅仅需 ...
- jquery读取后台代码
前台代码: <script type="text/javascript"> $(function () { $("#btn") ...
- xpath应用
import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.El ...
- 『C # 开发』VS 2008 修改默认生成代码模版
作为Coder,或许会因为每次写代码前要把版权信息Ctrl+C/V上去而蛋疼 ╮(╯▽╰)╭ 可作为Code Copyer,又何尝不蛋疼呢,怎么会容忍作业上署上别人的姓名,学号,XXX 还是要先S ...
- Vector3.Dot 与Vector3.Cross
Vector3.Dot(点积) : 点积的计算方式为: a·b=|a|·|b|cos<a,b>; 其中<a,b>和<b,a> 夹角不分顺序; 物理学中点积用来计算 ...
- 在Activity的生命周期中,会被系统回调的方法
onCreate(Bundle savedStatus):创建Activity时被回调.onStart():启动Activity时被回调.onRestart():重新启动Activity时被回调.on ...
- mybatis mapper namespace
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#insert_update_and_delete org.apache.ibatis.excep ...
- linux开源论坛
开源资源: 开源http://oss.org.cn/?action-news http://www.lupaworld.com/proj.php http://www.10pig.cn/linux/o ...
- Create XHR
var createXHR = function() { var xhr, last_e; var PROGIDS = [ "Msxml2.XMLHTTP.6.0", //&quo ...