zoukankan      html  css  js  c++  java
  • C#可变数目参数

    前不久看sqlite的源码时发现这么一行代码,不知其语法,CSDN求助后认识了一位新名词:可变参数

    Code
    /*
    ** Configuration settings for an individual database connection
    */
    int sqlite3_db_config(sqlite3 *db, int op, ){
      va_list ap;
      
    int rc;
      va_start(ap, op);
      
    switch( op ){
        
    case SQLITE_DBCONFIG_LOOKASIDE: {
          
    void *pBuf = va_arg(ap, void*);
          
    int sz = va_arg(ap, int);
          
    int cnt = va_arg(ap, int);
          rc 
    = setupLookaside(db, pBuf, sz, cnt);
          
    break;
        }
        
    default: {
          rc 
    = SQLITE_ERROR;
          
    break;
        }
      }
      va_end(ap);
      
    return rc;
    }

    请注意该方法的第三个参数,定义为"...",CSDN贴子地址:http://topic.csdn.net/u/20081219/09/0dc9e085-bc12-44af-8723-8a014868bca5.html

    C\C++里的语法就不多做介绍了,实际上我也是一知半解,

    直到今早在地铁里看书时发现,C#中也有类似的"可变参数",

    在《.NET框架程序设计(修订版)》一书的206页面,第四部分,第九章第六节,可变数目参数

    其介绍了如何定义和使用可变数目参数的方法,使用关键字params

    书中举了一个简单的例子,注释都写代码中去了,不多说了,看代码,

    Code
    public class App {
            
    static void Main() {
                
    //常规使用方法
                Console.WriteLine( Add( new Int32[] { 12345 } ) );

                
    //另一种调用方法
                Console.WriteLine( Add( 12345 ) );

                
    //当然,参数数目是可变的,但其类型是被约束的
                Console.WriteLine( Add( 123456789101112131415 ) );

                
    //如果类型可变,数目可变怎么办?书给出的答案非常简单,就是使用object类型即可
                
    //备注下下
            }


            
    /// <summary>
            
    /// 使用了params关键字
            
    /// </summary>
            
    /// <param name="values">int[]</param>
            
    /// <returns>int[]的和</returns>
            static Int32 Add( params Int32[] values ) {
                Int32 sum 
    = 0;
                
    forint x = 0 ; x < values.Length ; x++ )
                    sum 
    += values[ x ];
                
    return sum;
            }
        }


    ------------------------------------------
    除非特别声明,文章均为原创,版权与博客园共有,转载请保留出处
    BUY ME COFFEE
  • 相关阅读:
    windows程序设计第4章Text Output练习(831121)
    约瑟夫问题的递归公式
    哈希(hash)以及C++标准库哈希(std::hash)
    返回顶部的一段代码
    对于使用 UNIKON ALL 中表的顺序
    正则表达式的实际运用
    json.help
    省市区联动
    一个JS时间选择控件
    (转)C# Enum,Int,String的互相转换 枚举转换
  • 原文地址:https://www.cnblogs.com/kkun/p/1382804.html
Copyright © 2011-2022 走看看