首页 > C#的方法的参数修饰符详解

C#的方法的参数修饰符详解

方法参数修饰

(啥也没有) 如果参数的修饰是啥也没有,那么其参数传递的方式是值传递,接受方收到的是原始数据的拷贝

out 说明了参数是引用传递。

params 可变参,注意了这种修饰符针对的参数一定是最后一个参数

ref 引用传递,参数的内容会改变。

// 缺省是传值

public static int Add(int x, int y)

{

int ans = x + y;

x = 10000;

y = 88888;

return ans;

}

static void Main(string[] args)

{

int x = 9, y = 10;

Console.WriteLine("调用前: X: {0}, Y: {1}", x, y);

Console.WriteLine("结果: {0}", Add(x, y));

Console.WriteLine("调用后: X: {0}, Y: {1}", x, y);

}

// 输出修饰

public static void Add(int x, int y, out int ans)

{

ans = x + y;

}

static void Main(string[] args)

{

// 不需要进行本地赋值

int ans;

Add(90, 90, out ans);

Console.WriteLine("90 + 90 = {0} ", ans);

}

// 多个输出修饰

public static void FillTheseValues(out int a, out string b, out bool c)

{

a = 9;

b = "Enjoy your string.";

c = true;

}

static void Main(string[] args)

{

int i;

string str;

bool b;

FillTheseValues(out i, out str, out b);

Console.WriteLine("Int is: {0}", i);

Console.WriteLine("String is: {0}", str);

Console.WriteLine("Boolean is: {0}", b);

}

//引用修饰

public static void SwapStrings(ref string s1, ref string s2)

{

string tempStr = s1;

s1 = s2;

s2 = tempStr;

}

This method can be called as so:

static void Main(string[] args)

{

string s = "第一个字符串";

string s2 = "其他字符串";

Console.WriteLine("之前: {0}, {1} ", s, s2);

SwapStrings(ref s, ref s2);

Console.WriteLine("之后: {0}, {1} ", s, s2);

}

//可变参

static double CalculateAverage(params double[] values)

{

double sum = 0;

for (int i = 0; i < values.Length; i++)

sum += values[i];

return (sum / values.Length);

}

static void Main(string[] args)

{

// Pass in a comma-delimited list of doubles...

double average;

average = CalculateAverage(4.0, 3.2, 5.7);

Console.WriteLine("4.0, 3.2, 5.7 的平均数是: {0}",

average);

double[] data = { 4.0, 3.2, 5.7 };

average = CalculateAverage(data);

Console.WriteLine("Average of data is: {0}", average);

Console.ReadLine();

}

转载于:https://www.cnblogs.com/ayajenson/archive/2008/08/05/1261003.html

更多相关:

  • importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;//结果与DES算...

  • 题目:替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题: 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public:s...

  • 在C++11标准库中,string.h已经添加了to_string方法,方便从其他类型(如整形)快速转换成字面值。 例如: for (size_t i = 0; i < texArrSize; i++)RTX_Shader.SetInt(string("TexArr[") + to_string(i) + "]", 7 + i);...

  • Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下。 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输windows平台的雅黑字体。下面我打算微黑来美化Ubuntu 14.04. 1.安装文泉驿微黑字体库 sudo aptitude...

  • 使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或者 针对string的+ 操作都会让string内部的数据域动态增加,而动态增加的...

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • //普通委托DeleteShow ds = new DeleteShow(ShowName);Console.WriteLine("----------------------");Console.WriteLine("普通委托----请输入用户名:");string Name = Console.ReadL...

  • 最近一直琢磨如何用C#+GDAL读取栅格数据(.tif或.img),运气不错的在GDAL 的官网上找到一部分源码。经过本人测试,效果还不错。学习还将继续深入下去。 参考网址:http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/csharp/apps/GDALRead.cs 开发环境:V...