简单介绍C#方法参数

开发 后端
这里简单介绍C#方法参数,一个输出参数仅用于从方法传递回一个结果。它和引用参数的另一个区别在于:调用者不必先初始化变量才调用方法。

C#方法参数

因方法要处理更改数值,你多多少少要传递值给方法,并从方法获得返回值。以下三个部分涉及到C#方法参数的三种参数。
◆输入参数
◆引用参数
◆输出参数

1.输入参数

你早已在例子中见过的一个参数就是输入参数。你用一个输入参数通过值传递一个变量给一个方法——方法的变量被调用者传递进来的值的一个拷贝初始化。示范输入参数的使用。

  1. using System;  
  2. public class SquareSample  
  3. {  
  4. public int CalcSquare(int nSideLength)  
  5. {  
  6. return nSideLength*nSideLength;  
  7. }  
  8. }  
  9. class SquareApp  
  10. {  
  11. public static void Main()  
  12. {  
  13. SquareSample sq = new SquareSample();  
  14. Console.WriteLine(sq.CalcSquare(25)。ToString());  
  15. }  

输入参数按C/C++程序员早已习惯的工作方式工作。如果你来自VB,请注意没有能被编译器处理的隐式ByVal或ByRef——如果没有设定,参数总是用值传递。

这点似乎与我前面所陈述的有冲突:对于一些变量类型,用值传递实际上意味着用引用传递。迷惑吗? 一点背景知识也不需要:COM中的东西就是接口,每一个类可以拥有一个或多个接口。一个接口只不过是一组函数指针,它不包含数据。

重复该数组会浪费很多内存资源;所以,仅开始地址被拷贝给方法,它作为调用者,仍然指向接口的相同指针。那就是为什么对象用值传递一个引用。

2.引用参数

尽管可以利用输入参数和返回值建立很多方法,但你一想到要传递值并原地修改它(也就是在相同的内存位置),就没有那么好运了。这里用引用参数就很方便。

因为你传递了一个变量给该方法(不仅仅是它的值),变量必须被初始化。否则,编译器会报警。显示如何用一个引用参数建立一个方法。

  1. // class SquareSample  
  2. using System;  
  3. public class SquareSample  
  4. {  
  5. public void CalcSquare(ref int nOne4All)  
  6. {  
  7. nOne4All *= nOne4All;  
  8. }  
  9. }  
  10. class SquareApp  
  11. {  
  12. public static void Main()  
  13. {  
  14. SquareSample sq = new SquareSample();  
  15. int nSquaredRef = 20; // 一定要初始化  
  16. sq.CalcSquare(ref nSquaredRef);  
  17. Console.WriteLine(nSquaredRef.ToString());  
  18. }  

正如所看到的,所有你要做的就是给定义和调用都加上ref限定符。因为变量通过引用传递,你可以用它来计算出结果

并传回该结果。但是,在现实的应用程序中,我强烈建议要用两个变量,一个输入参数和一个引用参数。

3.输出参数

传递参数的第三种选择就是把它设作一个输出参数。正如该名字所暗示,一个输出参数仅用于从方法传递回一个结果。它和引用参数的另一个区别在于:调用者不必先初始化变量才调用方法。

  1. using System;  
  2. public class SquareSample  
  3. {  
  4. public void CalcSquare(int nSideLength, out int nSquared)  
  5. {  
  6. nSquared = nSideLength * nSideLength;  
  7. }  
  8. }  
  9. class SquareApp  
  10. {  
  11. public static void Main()  
  12. {  
  13. SquareSample sq = new SquareSample();  
  14. int nSquared; // 不必初始化  
  15. sq.CalcSquare(15, out nSquared);  
  16. Console.WriteLine(nSquared.ToString());  
  17. }  

以上介绍C#方法参数

【编辑推荐】

  1. 介绍Mono C#编译器
  2. C#运算符重载学习总结
  3. 概述C#语言的结构体
  4. C#遗传算法学习笔记
  5. 讨论C#分部方法
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-08-20 16:25:59

C# 匿名方法

2009-08-25 09:58:56

C#参数不同点

2009-08-06 18:15:13

C# SQL Serv

2009-08-13 17:36:54

编译C#代码

2009-09-01 16:19:57

C# new()约束

2009-08-14 16:46:44

C#元数据

2009-08-25 13:38:35

C# Timer组件

2009-08-03 17:51:43

C#引用类型

2009-09-03 09:40:57

C#创建表单

2009-08-07 17:12:07

C# DLL函数

2009-08-18 17:37:57

C#固定指针

2009-08-06 14:53:41

C# User类

2009-08-10 16:19:37

C#冒泡排序

2009-08-27 10:19:22

C#匿名类型

2009-08-21 17:55:52

C#复合控件

2009-08-07 17:41:40

C#预处理

2009-08-25 14:42:41

由C++转向C#

2009-08-12 10:11:18

C# 回调函数

2009-08-26 13:24:54

C#字符串

2009-08-27 13:37:11

C#类和结构
点赞
收藏

51CTO技术栈公众号