C# Main函数详解
2018-01-15 22:10:59
一、Main()方法的简介
1、唯一性。一般情况下,一个C#可执行程序只有一个Main函数,作为程序入口。但是在某些情况(如单元测试中),程序拥有多个Main函数,,这个时候我们就需要通过命令行指定以哪个Main()方法作为程序的唯一入口。
2、静态性。Main()方法通过static修饰,这个主要是让我们可以通过类名加方法的形式调用Main()方法,使得我们不需要创建对象的实例(即new出该对象)而直接调用Main函数。使用静态static修饰符的原因:
3、Main的参数。分析Main()方法的参数是一个字符串(string[] args),这个参数可以包含任意数量的命令行输入参数。
4、Main函数的修饰符。一般不加修饰符,默认为private,但可以public修饰符,但编译器在编译时会设置为priavte。
二、Main()方法为什么使用static修饰
假设没有static关键字,那意味着需要用生成一个实例后才可以调用这个Main方法,而Main方法是程序入口点,你没有进入Main方法,自然无法生成一个实例,既然没有实例,那就无法调用Main函数,岂不矛盾?所以Main函数被设置为static。直接通过类名加方法的形式调用Main()方法,使得我们不需要创建对象的实例(即new出该对象)而直接调用Main函数。
三、Main()方法的四种形式
1、无返回值,以字符串数组作为参数
class Program
{
static void Main(string[] args)
{
}
}
2、无返回值,无参数
class Program
{
static void Main()
{
}
}
3、返回int类型数值,以字符串数组作为参数
class Program
{
static int Main()
{ return ;//返回整数0(0:表示没有出现异常情况正常返回;其他值(非0),表示主函数执行过程中的异常情况。)
}
}
4、返回int类型数值,无参数
class Program
{
static int Main(string[] args)
{
return ;//返回整数0(0:表示没有出现异常情况正常返回;其他值(非0),表示主函数执行过程中的异常情况。)
}
}
四、Main()的参数string[] args的含义
args是用来处理命令行参数的。命令行参数,就是你运行这个程序的时候给它传的参数。它是可选项,不是必须的。具体使用如下:
1:编写如下程序
class Program
{
static void Main(string[] args)
{
foreach (string str in args)
{
Console.WriteLine("Main函数传递的参数args:{0}", str);
}
Console.ReadKey();
}
}
2:编译完成该程序后,在Debug文件中找到该.exe文件,复制到桌面,再复制路径+文件名,然后在命令行模式下输入“C:\Users\dwa1124\Desktop\Test aa bb cc”。运行后我们发现:

C# Main函数详解的更多相关文章
- Linux C popen()函数详解
表头文件 #include<stdio.h> 定义函数 FILE * popen( const char * command,const char * type); 函数说明 popen( ...
- memset函数详解
语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...
- fork()函数详解
linux中fork()函数详解(原创!!实例讲解) (转载) 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程 ...
- Linux环境fork()函数详解
Linux环境fork()函数详解 引言 先来看一段代码吧, 1 #include <sys/types.h> 2 #include <unistd.h> 3 #include ...
- pthread_once()函数详解
转自:pthread_once()函数详解 pthread_once()函数详解 在多线程环境中,有些事仅需要执行一次.通常当初始化应用程序时,可以比较容易地将其放在main函数中.但当你写一个库 ...
- c/c++ 标准库 bind 函数 详解
标准库 bind 函数 详解 bind函数:接收一个函数名作为参数,生成一个新的函数. auto newCallable = bind(callbale, arg_list); arg_list中的参 ...
- linux的system () 函数详解
linux的system () 函数详解 system(执行shell 命令)相关函数 fork,execve,waitpid,popen表头文件 #i nclud ...
- linux select函数详解
linux select函数详解 在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状 ...
- loadrunner 脚本开发- web_url函数详解
脚本开发- web_url函数详解 by:授客 QQ:1033553122 加载指定url的web页面(GET请求) C语言函数 int web_url( const char *StepName ...
随机推荐
- Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Query was empty
1 错误描写叙述 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(Invocable ...
- webAPP踩坑记录
最近公司突然给我们下了一个任务 一个星期要做出一个系统网站 外加手机app 2个同事负责 web开发 我负责手机app 的开发 今天终于初级版本做完了,记录一下手机app踩过的坑与优化之路 用 ...
- JAVA入门[9]-mybatis多表关联查询
概要 本节要实现的是多表关联查询的简单demo.场景是根据id查询某商品分类信息,并展示该分类下的商品列表. 一.Mysql测试数据 新建表Category(商品分类)和Product(商品),并插入 ...
- 在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序
引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序(http://www.cnblogs.com/chenxizhang/p/7148657.ht ...
- 微信小程序的Web API接口设计及常见接口实现
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们 ...
- CentOS 6.5 安装MySQL过程
使用软件的版本 CentOS 6.5 mysql-5.5.22.tar.gz cmake-2.8.6.tar.gz 准备工作 解压安装mysql之前把关于mysql软件包卸载,以免程序冲突,端口冲突. ...
- nginx+redis缓存微信的token数据
上一篇文章我们讲了如何在负载均衡的项目中使用redis来缓存session数据,戳这里. 我们在项目的进展过程中,不仅需要缓存session数据,有时候还需要缓存一些别的数据,比如说,微信的acces ...
- 理解Object.defineProperty()
理解Object.defineProperty() Object.defineProperty() 方法直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 基本语法:Obj ...
- 理解cocoa和cocoa touch的响应者链
该文章翻译自:Understanding cocoa and cocoa touch responder chain. 转载注明出处:http://www.cnblogs.com/zhanggui/p ...
- iOS 获取当前应用的信息以及用户信息:版本号手机号手机型号
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; CFShow(infoDictionary); // ap ...