博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6.C#函数-2
阅读量:6551 次
发布时间:2019-06-24

本文共 3721 字,大约阅读时间需要 12 分钟。

hot3.png

//在结构中定义的函数/* 在结构中不但可以定义数据,还可以包含函数 主要左右是在引用结构的时候会有一些功能代码上的重复,所以在结构定义函数,可以减少我们重复编写引用结构时所需要写的代码 */using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 结构函数{    struct CustomerName    {        public string firstName;        public string lastName;        public string getName()        {            return firstName + " " + lastName;        }    }    struct Vector3    {        public float x;        public float y;        public float z;        public double Distance()        {            return Math.Sqrt(x * x + y * y + z * z);        }    }    class Program    {        static void Main(string[] args)        {            CustomerName myName;            myName.firstName = "siki";            myName.lastName = "Yang";            Console.WriteLine("My name is {0} {1}.", myName.firstName, myName.lastName);            Console.WriteLine("My name is " + myName.getName());            Vector3 myVector3;            myVector3.x = 3;            myVector3.y = 3;            myVector3.z = 3;            Console.WriteLine(myVector3.Distance());            Console.ReadKey();        }    }}/* 为什么使用函数重载overload 假设我们有一个函数来实现求的一个数组的最大值 这个函数只能处理int数组如果想处理double类型的话需要再定义一个函数 函数名相同,参数不同,这个叫做函数的重载,编译器通过参数去识别该调用那一个函数 */using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 函数的重载{    class Program    {        static int MaxValue(params int[] array)        {            Console.WriteLine("int类型的maxvalue被调用");            int maxValue = array[0];            for (int i = 0; i < array.Length; i++)            {                if (array[i] > maxValue)                {                    maxValue = array[i];                }            }            return maxValue;        }        static double MaxValue(params double[] array)        {            Console.WriteLine("double类型的maxvalue被调用");            double maxValue = array[0];            for (int i = 0; i < array.Length; i++)            {                if (array[i] > maxValue)                {                    maxValue = array[i];                }            }            return maxValue;        }        static void Main(string[] args)        {            int res = MaxValue(2, 3, 2354);            double res2 = MaxValue(1.1, 232.2, 3432.43);            Console.WriteLine(res);            Console.WriteLine(res2);        }    }}/*   委托(delegate)是一种存储函数引用的类型。委托的定义指定了一个返回类型和一个参数列表定义了委托之后,就可以声明该委托类型的变量,接着就可以把一个返回类型跟参数列表跟委托一样的函数赋值给这个变量。委托的使用分两步	定义	声明(变量)结构体,枚举的使用同上都分为定义和声明 整数类型,数组类型,字符串类型,都是直接声明变量的,因为类型的定义已经完成了(CLR中已经完成定义)*/using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 委托的定义和声明{	//定义一个委托 类型double 类型名Mydelegate,类型名可以理解为函数名	//委托关键字delegate	//委托的定义不需要函数体	public delegate double Mydelegate(double param1, double param2);	class Program	{		static double Multiply(double param1,double param2)		{			return param1 * param2;		}		static double Divide(double param1, double param2)		{			return param1 / param2;		}		static void Main(string[] args)		{			Mydelegate de;//利用委托声明一个新的变量			de = Multiply;//委托的变量赋值的时候,返回值跟参数列表必须一致			Console.WriteLine(de(1.0, 2.2));			de = Divide;			Console.WriteLine(de(6.0, 2.0));			Console.ReadKey();		}	}}using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 函数的递归调用{    class Program    {        static int F(int n)        {            if (n == 0)            {                return 2;            }            if (n == 1)            {                return 3;            }            return F(n - 1) + F(n - 2);//函数调用自身,叫做的递归调用,递归函数一定要设置递归终止条件        }        static void Main(string[] args)        {            int res = F(40);        }    }}

 

转载于:https://my.oschina.net/eddylinux/blog/1491795

你可能感兴趣的文章
Azure Table storage 基本用法
查看>>
排序算法笔记:希尔排序 ShellSort in java
查看>>
华三交换机链路聚合
查看>>
华三 SSH V7版本
查看>>
linux安装redis缓存手把手学会
查看>>
java.lang.ClassNotFoundException: Cannot find class: User
查看>>
k8s之二进制安装
查看>>
memcached命令行以及数据导出和导入、 php连接memcached以及储到sessions
查看>>
决心书
查看>>
Linux 系统DNS解析
查看>>
必背知识点-2
查看>>
第十三天内容《基础交换十三》小牛配置思路 终结篇
查看>>
如何修改redhat7.2的ROOT密码
查看>>
mysql面试题
查看>>
Zabbix3.0.12部署
查看>>
腾讯技术工程 | 腾讯AI Lab解析2017 NIPS三大研究方向,启动教授及学生合作项目...
查看>>
Ubuntu版本代号
查看>>
sel4j错误记录
查看>>
搭建android + cordova环境
查看>>
老男孩Linux50期决心书
查看>>