zoukankan      html  css  js  c++  java
  • 一天一小步_我学C#入门精典_第九天

    第六章 函数

     1,定义和使用函数

    class Program
    {
        
    static void Write()
        {
            Console.WriteLine(
    "Text output from fumction");
        }
        
    static void Main(string[] args)
        {
            Write();
            Console.ReadKey();
        }
    }

     函数的定义由以下几部分组成:

    • 两个关键字:static 和 void
    • 函数名后跟圆括号, 如 Write();
    • 一个要执行的代码块,放在花括号中...

    *函数名一般采用PascalCasing形式来编写.(简单的说,PascalCasing形式就是每个单词的首写字母大写)

     2,参数

     (1)参数匹配.在调用函数时,必须使参数与函数定义中指定的参数完全匹配,这意味着要匹配参数的类型,个数和顺序.

     (2) 参数数组.(参数的个数没有限制)

     C#允许为函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后一个参数,称为参数数组.参数数组可以使用个数不定的参数调用函数,它可以使用params关键字来定义.

    params 关键字可以指定在参数数目可变处采用参数的方法参数。

    在方法声明中的 params 关键字之后不允许任何其他参数(即此参数为最后一个参数),并且在方法声明中只允许一个 params 关键字。

    参数数组可以简化代码,因为不必从调用代码中传递数组,而是传递可在函数中使用的一个数组中相同类型的几个参数.

    示例:

    class Program
    {
        
    static int SumVals(params int[] vals)
        {
            
    int sum = 0;
            
    foreach (int val in vals)
            {
                sum 
    += val;
            }
            
    return sum;
        }

        
    static void Main(string[] args)
        {
            
    int sum = SumVals(15298);
           
    //输出25
            Console.WriteLine(
    "Summed Values = {0}", sum);
        }
    }

     MSDN参考示例:

    /*
        MSDN参考示例:
    */
    public class MyClass 
    {
        
    public static void UseParams(params int[] list) 
        {
            
    for (int i = 0 ; i < list.Length; i++)
            {
                Console.Write(list[i] 
    + " ");
            }
            Console.WriteLine();
        }

        
    public static void UseParams2(params object[] list) 
        {
            
    for (int i = 0 ; i < list.Length; i++)
            {
                Console.Write(list[i] 
    + " ");
            }
            Console.WriteLine();
        }

        
    static void Main() 
        {
            UseParams(
    123);
            UseParams2(
    1'a'"test"); 

            
    // An array of objects can also be passed, as long as
            
    // the array type matches the method being called.
            int[] myarray = new int[3] {10,11,12};
            UseParams(myarray);
        }
    }
    /*
    Output:
        1 2 3
        1 a test
        10 11 12
    */

     (3)引用参数和值参数

     值参数示例:

    class program
    {
        
    static void Main(string[] args)
        {
            
    int myNumber = 5;
            Console.WriteLine(
    "myNumber = {0]", myNumber);
            shwoDouble(myNumber);
            Console.WriteLine(
    "myNumber = {0}", myNumber);
        }
        
    static void showDouble(int val)
        {
            val 
    *= 2;
            Console.WriteLine(
    "val doubled = {0}", val);
        }
    }

     输出结果:

    myNumber = 5
    val doubled = 10
    myNuber = 5

    把myNumber作为一个参数,调用showDouble()并不影响myNumber的值.

    使用引用参数ref示例:

    class program
    {
        
    static void Main(string[] args)
        {
            
    int myNumber = 5;
            Console.WriteLine(
    "myNumber = {0}", myNumber);
            showDouble(
    ref myNumber);
            Console.WriteLine(
    "myNumber = {0}", myNumber);
        }
        
    static void showDouble(ref int val)
        {
            val 
    *= 2;
            Console.WriteLine(
    "val doubled = {0}", val);
        }
    }

     输出结果:

    myNumber =5
    val doubled =10
    myNumber = 10

     *用ref参数的变量有两个限制:
    首先,函数可能会改变引用参数的值,所以必须在函数调用中使用变量.(不能使用const关键).其次,必须使用初始化过的变量.

    (4)输出参数out

    该参数的值将返回给函数调用中使用的变量.与ref的区别:

    • 把未赋值的变量用作ref参数是非法的,但可以用作out参数
    • 在函数使用out参数时,该参数必须看作是还未赋值.

    示例:

    #region test15 输出参数out的使用
    /// <summary>
    /// test15
    /// 输出参数out的使用
    /// 在Main函数调用
    /// </summary>
    public void test15()
    {
        
    int[] myArray =1836259302 };
        
    int maxIndex;
        Console.WriteLine(
    "The maxnum value in myArray is {0}", MaxValue(myArray, out maxIndex));
        Console.WriteLine(
    "最大值的下标是:========={0}=========", maxIndex + 1);
    }
    static int MaxValue(int[] intArray, out int maxIndex)
    {
        
    int maxVal = intArray[0];
        maxIndex 
    = 0;
        
    for (int i = 1; i < intArray.Length; i++)
        {
            
    if (intArray[i] > maxVal)
            {
                maxVal 
    = intArray[i];
                maxIndex 
    = i;
            }
        }
        
    return maxVal;
    }
    #endregion
    .
  • 相关阅读:
    Python---Flask--08--Flask-Ckeditor
    Python---Flask--07--SQLAlchemy基本关系
    Python---Flask--06--分页的实现
    Python---Flask--05--g对象和钩子函数
    maven项目管理构建
    POI 设置
    http状态码
    hibernate框架之-查询结果集返回类型
    Struts2框架之-注解开发
    Struts2框架之-Struts2的标签
  • 原文地址:https://www.cnblogs.com/soso_ak/p/1443154.html
Copyright © 2011-2022 走看看