10.C# -- 函数参数,参数数组,值传递函数,引用传递函数,输出函数,无参函数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    class Program
{
        static int val;
        //函数
        //1. 关键字static:静态函数,void:无返回值,return:程序立即返回调用代码;
        //实例1: 函数参数
        static double product(double param1, double param2)
{
            return param1 * param2;
}
        //实例2: 参数数组
        static int Add(params int[] p)
{
            int sum = 0;
            foreach (int i in p)
            sum += i;
            return sum;
}
        //实例3: 值传递函数,结果不改变
        static void ShowDoulbe(int val)
{
            val *= 2;
            Console.WriteLine("val doubled ={0}", val);
}
        //实例4: 无参函数,结果改变
        static void ShowDoulbe()
{
            val *= 2;
            Console.WriteLine("val doubled ={0}", val);
}
        //实例5: 引用传递函数,结果改变
        static void ShowDoulbe(ref int val)
{
            val *= 2;
            Console.WriteLine("val doubled ={0}", val);
}
        //实例6: 输出函数
        static void outfun(out string str)
{
            str = "test";
            str += "fun";
            Console.WriteLine("outfun result: {0}", str);
}
        static void Main(string[] args)
{
            //调用函数参数
            Console.WriteLine("Call func parameter;");
            double a = product(1.2, 2.1);
            Console.WriteLine(a);
            //调用参数数组
            Console.WriteLine("Call parameter array;");
            int sum = Add(1, 3, 5, 7);
            Console.WriteLine(sum);
            //调用无参函数,结果改变
            Console.WriteLine("Call non-parameter func;");
            val = 5;
            Console.WriteLine("Befor the call;");
            Console.WriteLine("myNumber={0}", val);
            Console.WriteLine("After the call;");
            ShowDoulbe();
            Console.WriteLine("myNumber={0}", val);
            //调用值传递函数,结果不改变
            Console.WriteLine("Call value-passed func;");
            int myNumber = 5;
            Console.WriteLine("Befor the call;");
            Console.WriteLine("myNumber={0}", myNumber);
            Console.WriteLine("After the call;");
            ShowDoulbe(myNumber);
            Console.WriteLine("myNumber={0}", myNumber);
            //调用引用传递函数,结果改变
            Console.WriteLine("Call reference-passed func;");
            int myNumber2 = 5;
            Console.WriteLine("Befor the call;");
            Console.WriteLine("myNumber={0}", myNumber2);
            Console.WriteLine("After the call;");
            ShowDoulbe(ref myNumber2);
            Console.WriteLine("myNumber={0}", myNumber2);
            //调用输出函数
            Console.WriteLine("Call out parameter function;");
            string test2;
            outfun(out test2);
            Console.ReadLine();
}
}
}
 
 
 

引用类型和值类型

数据根据变量的类型以两种方式中的一种存储在一个变量中。

值类型,在内存的一个地方存储它们自己和它们的内容。Int 变量等,总是包含一个值。

使用空类型(泛型中的一种形式)创建一个值类型。

引用类型,存储指向内存中其他某个位置(堆)的引用,在另一个位置存储内容。包括String变量,数组类型,object,每个类。可以存储Null,表示它不包含值。

 

你可能感兴趣的:(C#,函数参数,传递函数)