C#程序之Main()方法
一、Main()方法的简介
1、一般情况下,一个C#可执行程序只有一个应用程序对象(也就是就程序入口),但是在某些情况,可能会有多个应用程序对象(程序入口),如单元测试中,这个时候我们就需要通过命令行指定以哪个Main()方法作为程序的入口。
2、分析Main()方法,我们发现Main()方法通过static修饰,这个主要是让我们可以通过类名加方法的形式吊用Main()方法,我们再调用之前不需要创建对象的实例(也就是new出该对象)
3、分析Main()方法的参数是一个字符串(string[] args),这个参数可以包含任意数量的命令行输入参数
二、Main()方法的的其他形式1、默认情况下,Visual Studio生成的Main()方法有一个void返回值,并且只接收一个参数(一个字符串数组,用于接收任意数量的命令行输入参数)
public static void Main(string[] args)
{
//方法体
}
但是这不是唯一的Main()方法的形式,以下的Main()方法作为程序的入口点都是被允许的.
//整型返回类型,以字符串数组作为参数
static int Main(string[] args)
{
return ;
} //没有返回值,没有参数
static void Main()
{ } //整型返回类型,没有参数
static int Main()
{ }
注意、如果不给Main()方法提供一个修饰符,那么Main()方法默认就是私有的,当然Main()方法可以定义成共有的,但是Visual Studio会把程序的Main()自动定义成隐式私有的,以确保其他程序不能直接吊用另一个程序的入口点
很明显,选择怎样构造Main()方法要基于两个问题。第一当Main()完成且程序终止时,是否要向系统返回一个值。第二是否需要处理用户提供的命令行参数?如果是,他们将被保存到string数组中。
三、指定应用程序的错误代码
绝大多数的Main()方法会以void作为返回值,但是C#和其他C类型的语言一样,都可以从Main()返回一个int。根据惯例,返回值0表示程序正常结束,而其他值如(-1)表示程序有异常发生(要知道值0是自动返回的,即使Main()方法的原型结构返回为void)
四、在Main()方法中处理用户输入的命令行参数
在Main()方法中获取用户的命令行输入参数有很多中方法
1、通过传递给Main()方法的string[] args的参数中的args引用来对用户输入进行常规的操作
static int Main(string[] args)
{
for(int i=;i<args.length;i++)
{
Console.WriteLine("Arg:{0}",args[i]);
}
//foreach处理
foreach(string Arg in args)
{
Console.WriteLine("Arg:{0}",Arg);
}
}
2、通过VS自带的可视化工具指定命令行参数
3、通过System.Environment的方法来获取命令行参数
static int Main(string[] args)
{
string[] theArgs=Environment.GetCommandLineArgs();//通过System.Environment类来获取命令行参数
for(int i=;i<theArgs.length;i++)
{
Console.WriteLine("Arg:{0}",args[i]);
}
//foreach处理
foreach(string Arg in theArgs)
{
Console.WriteLine("Arg:{0}",Arg);
}
}
C#程序之Main()方法的更多相关文章
- 读书笔记 C# 控制台应用程序之Main方法浅析
Main方法是C#控制台应用程序和Windows窗体应用程序的入口点.Main方法可以有形参,也可以没有,可以有返回值(int整型),也可以没有.如下定义: 无返回值.无形参的格式: static v ...
- 控制台应用程序的Main方法
总结一下Main方法规则: 1.Main 方法名大小写有规范. 2.Main 方法返回类型只有 void.int两种返回类型. 3.Main 方法的参数可以是string[] args,也可以为空,只 ...
- WPF编译时提示“...不包含适合于入口点的静态‘Main’方法 ...”
今天看了一下wpf的Application类方面的知识,一个windows应用程序由一个Application类的实例表示,该类跟踪在应用程序中打开的所有窗口,决定何时关闭应用程序(属性 Shutdo ...
- 【细说Java】揭开Java的main方法神秘的面纱
大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可 ...
- 【细说Java】揭开Java的main方法神秘的面纱(转)
大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可 ...
- 反射中的一个问题点:利用Method执行main方法特殊的地方
利用Method执行main方法 问题: 启动Java程序的main方法的参数是一个字符串数组,即public static void main(String[] args),通过反射方式来调用这个m ...
- 反射main方法
利用Java反射机制去调用其他类的main方法基于这种情形: 当程序中的某个类在运行到某处需要去调用其他类的main方法时,如果此程序并不知道此main方法所属类的名称,而只是在程序中接受某一代表此m ...
- Java main方法中的String[] args
-- Java 命令行参数 -- 关于其中的args以及public static / static public Java 命令行参数 前面已经看到多个使用Java数组的示例,每一个Java应用程序 ...
- [译]C# 7系列,Part 2: Async Main 异步Main方法
原文:https://blogs.msdn.microsoft.com/mazhou/2017/05/30/c-7-series-part-2-async-main/ 你大概知道,C#语言可以构建两种 ...
随机推荐
- Linux脚本练习
例1:写一个脚本,利用循环和continue关键字,计算100以内能被3整除的数之和 运行结果: 例2: 写一个脚本,利用循环和continue关键字,计算100以内能被3整除的数之和 运行结果: 例 ...
- linux命令之mount
熟悉linux的同学都应该知道mount命令.在linux中,一切皆文件.硬盘分区都是以文件目录的方式存在. 如果我们想访问移动硬盘,U盘等我们必须将这些设备mount到我们linux文件系统中某个目 ...
- 【hihocoder 1249 Xiongnu's Land】线性扫描
2015区域赛北京赛区的三水,当时在赛场上没做出的原因是复杂度分析不正确导致把方法想复杂了.近来复习复杂度分析,觉得不能只是笼统地看渐进复杂度(big-O),更应根据算法的伪码计算真正的以基本操作数为 ...
- 【LeetCode练习题】Validate Binary Search Tree
Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ...
- 关于CoreData的理解和使用.
CoreData是苹果官方推出的一种方便的面向对象的存储方式,相信大家都已经对其有所了解,但是对于CoreData的概念大家都存在部分的误区.给大家推荐个网址是苹果的官方文档的翻译版(http://o ...
- 三十、Java图形化界面设计——布局管理器之BorderLayout(边界布局)
边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次相应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENT ...
- radio与checkbox
最近一直在学习Javascript与asp.net MVC4,每天都在跟着书学习.这样总感觉自己看的很抽象,没有点实际的意义.而且,每次看的东西很容易忘记,所以打算在这里记录自己的学习笔记. Java ...
- 使用VS2003 发送Email
使用VS2003发送Email与之后VS2005版本及以上VS版本不一样,记录一下, 需要引用using System.Web.Mail; public void SendEmail() { try ...
- android开发字符串工具类(一)
package com.gzcivil.utils; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; impo ...
- DBSCAN(Density-based spatial clustering of applications with noise)
Density-based spatial clustering of applications with noise (DBSCAN) is a data clustering algorithm ...