C#基础入门 四

方法参数

  • 值参数:不附加任何修饰符;
  • 输出参数:以out修饰符声明,可以返回一个或多个给调用者;
    • 如果想要一个方法返回多个值,可以用输出参数来处理,输出参数由out关键字标识,如static void Car(out int x,out int y,int z){},与引用参数区别在于:调用方法前无需对输出参数进行初始化,输出型参数用于传递方法返回的数值。
    • 计算矩形面积的方法:(图8)

static void rectangle(int length,int width, out int rec)
{
rec = length * width;
}
public static void Main(string[] args)
{
int a = 10;
int b = 5;
int r;
rectangle(a, b, out r);
Console.WriteLine("矩形长为"+a);
Console.WriteLine("矩形宽为"+ b);
Console.WriteLine( "面积为" + r);
}
  • 如果函数有return,输出函数返回值(图9),这样就可以实现一个函数有多个返回值。

 static int rectangle(int length,int width, out int rec)
{
rec = length * width;
return length + 1;
}
public static void Main(string[] args)
{
int a = 10;
int b = 5;
int r;
int c=rectangle(a, b, out r);
Console.WriteLine("矩形长为"+a);
Console.WriteLine("矩形宽为"+ b);
Console.WriteLine( "面积为" + r+"返回值"+c); }
  • 引用参数:以ref修饰符声明;

    • 引用参数并不创建新的存储位置,相反,引用参数表示的存储位置恰是在方法调用中作为参数给出的那个变量所表示的存储位置,当利用引用参数想方法传递形参时,编译程序将把实际值在内存中的地址传递给方法。
  • 数组参数:以params修饰符声明。
    • 如果形参表中包含了数组型参数,那么它必须在参数表中位于最后,而且必须是一维数组类型,另外,数组型参数不可能将params修饰符与ref和out修饰符组合起来使用。
    • 数组参数长度可变,可为0,一次性,只能使用一次,而且要放到最后。
    • foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。
    • foreach(数据类型 标识符 in 表达式){循环体}
    • 计算{1,2,3,4}数组内元素的平方结果如下图所示(图10)

static void Square(params int[] s)
{
foreach (int g in s)
{
int radius = g;
int square = radius * radius;
Console.WriteLine(square);
}
}
public static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4 };
Square(arr);
}

练习题

求两个数的最大值

static void Max(int x,int y, out int max)
{
if (x > y) max = x;
else max = y;
Console.WriteLine("max="+max);
}
public static void Main(string[] args)
{
int m;
Console.WriteLine("请输入a的值:");
int a = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("请输入b的值:");
int b = Convert.ToInt16(Console.ReadLine());
Max(a, b, out m); }
  • 结果如下图所示:(图11)

重载

  • 方法重载实际上是函数名重载,即支持多个不同的方法采用同一名字。
  • 实现方法的重载必须满足下列条件之一:一是参数表中对应的参数类型不同;二是参数表中参数个数不同。
  • 方法重载只跟参数有关,跟返回值无关。图12

 static int Sum(int x,int y)
{
return x + y;
}
static float Sum(float x,float y)
{
return x+y;
}
static double Sum(int x,float y,double z){
return x+y+z;
}
public static void Main(string[] args)
{
int a = 10, b = 20;
float c = 10.5f, d = 34f;
double e = 40;
Console.WriteLine(Sum(a, b));
Console.WriteLine(Sum(c, d));
Console.WriteLine(Sum(a,c,e)); }
  • 如果形参中存在两个以上的形参类型存在隐式转换关系,则可能产生二义性
static double print(int i,double j){}
static double print(double i,int j){}
static void Main(string[] args)
{
double x=print(5,5);//二义性
}

C#基础入门 四的更多相关文章

  1. Swift语法基础入门四(构造函数, 懒加载)

    Swift语法基础入门四(构造函数, 懒加载) 存储属性 具备存储功能, 和OC中普通属性一样 // Swfit要求我们在创建对象时必须给所有的属性初始化 // 如果没办法保证在构造方法中初始化属性, ...

  2. D3基础入门四-事件处理

    6.5.0版 .on("mouseover", function(e,d) e: {"isTrusted":true} 第二个参考才是数据,但这在不同的环境可能 ...

  3. Mybatis框架基础入门(四)--SqlMapConfig.xml配置文件简介

    SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) o ...

  4. MyBatis基础入门《十四》ResultMap子元素(association )

    MyBatis基础入门<十四>ResultMap子元素(association ) 1. id: >> 一般对应数据库中改行的主键ID,设置此项可以提高Mybatis的性能 2 ...

  5. MyBatis基础入门《四》接口方式.Select查询集合

    MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...

  6. FPGA基础入门篇(四) 边沿检测电路

    FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电 ...

  7. 小白学 Python 爬虫(36):爬虫框架 Scrapy 入门基础(四) Downloader Middleware

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  8. Linux从入门到放弃、零基础入门Linux(第四篇):在虚拟机vmware中安装centos7.7

    如果是新手,建议安装带图形化界面的centos,这里以安装centos7.7的64位为例 一.下载系统镜像 镜像文件下载链接https://wiki.centos.org/Download 阿里云官网 ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. 【Oracle】Oracle 10g利用闪回挽救误删的数据

    我们在开发和运维过程中,经常遇到数据被误删除的情况.无论是在应用开发中的Bug,还是修改数据的时候,如果提交了错误数据修改结果,会带来很多问题.一般来说,一旦提交commit事务,我们是不能获取到之前 ...

  2. 项目通过nginx强转为https访问后,代码中重定向的连接又变成了http协议,导致点击页面按钮,后台逻辑处理完后重定向报错了

    修改如下,需要在nginx对应的server下的location中增加配置,使重定向的地址协议取当前链接的协议,而不是nginx访问tomcat的协议,因为nginx访问tomcat是http的,并没 ...

  3. SpringData JPA 接口和方法

    1.1 简单查询--接口方法 1.2 五个接口详解 1.2.1    CrudRepository接口 其中T是要操作的实体类,ID是实体类主键的类型.该接口提供了11个常用操作方法. @NoRepo ...

  4. 设置VS2010和IE8 调试ATL控件<转>

    VS2010设置篇: 设置VS2010 通过IE8 调试ATL的ActiveX控件的步骤如下: 设置项目属性 在项目的属性页对话框中选中“配置属性—>调试”,在右边填入下列参数: 命令      ...

  5. 3D数学基础 KeyNote 1

    [计算几何复习要点] 1.向量加法的几何含意: a+b的释意为:a的尾连上b的头,新建一条从a的尾指向b的头的向量. 2.向量减法的几何含意: a-b的释意为:尾部相连,新建一个从b的头指向a的头的向 ...

  6. Codeforces 678E 状压DP

    题意:有n位选手,已知n位选手之间两两获胜的概率,问主角(第一个选手)最终站在擂台上的概率是多少? 思路:一看数据范围肯定是状压DP,不过虽然是概率DP,但是需要倒着推:我们如果正着推式子的话,初始状 ...

  7. Servlet小案例总结

    亮点: 没有使用任何框架,视图层和业务层使用Servlet技术进行交互,持久层用java的jdbc工具类进行数据交互 较为底层,比较基础的工具类比较多,比如: BeanFactory工具类使用dom4 ...

  8. Opencv Harris角点检测

    #include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; ...

  9. spring4-2-bean配置-9-通过工厂方法配置bean

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjwAAAFICAIAAADbNrOHAAAgAElEQVR4nO2dy7W0uhGFOxWn4JEXAS

  10. 无网络安装mysql步骤

    1. 先安装Microsoft Visual C++ 2010 运行环境,运行vcredist_x86.exe文件: 2. 安装MySql数据库,运行mysql-installer-community ...