大胖的部落格

Just a note

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks

程序入口点Main函数:
1、Main第一个字母必须大写,返回值可以是void,也可以是int。
2、如果带命令行参数的话,格式如下:
      void Main(string[] args)
      多个命令行参数用空格隔开,如果命令行参数中带有空格,则该命令行参数用“”括起来。
3、必须是static函数。
      因为Main函数是定义在一个类中,非静态函数必须通过对象来调用,Main是程序的入口点,此时没有创建任何对象。若要在Main中直接调用的函数也应该为static,因为类的static成员函数不能调用非static成员函数。


//static
static void TestStatic()
{

}


//非static
void TestNonStatic()
{

}


static void Main(string[] arg)
{
    TestStatic();       
//OK,直接调用static函数
    TestNonStatic();    //error,不能直接调用非static函数

    Test t 
= new Test();
    t.TestNonStatic();  
//OK,通过对象调用非static函数
    t.TestStatic();     //error,不能通过对象调用static函数
    Test.TestStatic();  //OK, 通过类命调用static函数
}



参数匹配:
1、优先调用参数类型完全匹配的函数。
2、当没有类型完全匹配的函数时,如果传入的参数类型可以隐式转换为函数参数类型时,也可以调用。
3、若传入的参数类型不能隐式转换为函数参数类型,则调用失败。

//long
static void TestPara1(long l)
{
    Console.WriteLine(
"long");
}


//int
static void TestPara(int i)
{
    Console.WriteLine(
"int");
}



static void Main(string[] arg)
{
    TestPara(
4);    //调用TestPara(int i);若没有定义TestPara(int i), 则调用TestPara(long l)
    TestPara(4l);   //调用TestPara(long l);若没有定义TestPara(long i), 则error
}



可变参数:
1、使用params关键字修饰函数的最后一个参数,且只能修饰最后一个参数,该参数类型必须为数组。
2、调用该函数时,参数则可以不确定。

//可变参数    
static void TestPara(string name, params int[] i)
{
    Console.WriteLine(
"int");
}



static void Main(string[] arg)
{
    TestPara(
"nh"123);
}



值参数和引用参数:
1、使用ref修饰的参数为引用参数,可改变传入参数的值。
2、传入的值参数或引用参数,必须是初始化过的。
3、函数调用时,也需要在引用参数前面加ref关键字。

//值参数和引用参数   
static void TestPara(int i, ref int j)
{
    Console.WriteLine(
"int");
}



static void Main(string[] arg)
{
    
int i, j;
    TestPara(i, 
ref j);     //error, 参数未初始化

    i 
= 1;
    j 
= 2;
    TestPara(i, 
ref j);     //OK
}



输出参数:
1、使用out关键字修饰的参数是输出参数,定义了输出参数的函数必须在函数里对输出参数赋值。
2、调用函数时,传入的输出变量可以不用初始化。
3、函数调用时,也需要在输出参数前面加out关键字。

//输出参数
static void TestPara(out int i)
{
    i 
= 1;  //必须在该函数内给输出参数赋值,否则error
    Console.WriteLine("int");
}


static void Main(string[] arg)
{
    
int i ; //可以不用初始化
    TestPara(out i);
}


delegate:
类似C++中的函数指针,先声明delegate的类型,利用new创建一个delegate,指定与之关联的函数,然后就可以用delegate调用函数。

class Test
{
    
//声明一个delegate,指定函数的参数和返回值
    delegate void MyDelegate(int i);

    
static void Func2(int i)    //与delegate匹配
    {

    }


    
static void Main(string[] arg)
    
{
        
//delegate和函数的参数与返回值都必须一致
        MyDelegate md = new MyDelegate(Func2);     
 
        
//通过delegate调用函数
        md(4);
    }

}
posted on 2009-07-20 19:20 大胖 阅读(167) 评论(0)  编辑 收藏 引用 所属分类: C#

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理