.NET中函數(shù)Main的使用技巧
引言
最近在使用pandoc這個(gè)文檔轉(zhuǎn)換軟件,能夠?qū)Ω鞣N文檔進(jìn)行完美的轉(zhuǎn)換,比如從markdown文件轉(zhuǎn)為doc,ppt,tex,odt等等各種,感興趣的可以從Pandoc下載,對(duì)于pandoc的的文檔轉(zhuǎn)換,都是使用cmd中的命令來(lái)進(jìn)行操作的。現(xiàn)在我需要把d盤(pán)的1123.md文件轉(zhuǎn)換為docx文檔,我只需要在cmd中輸入下面的命令即可實(shí)現(xiàn)。

當(dāng)然在安裝pandoc的時(shí)候就已經(jīng)把pandoc添加到環(huán)境變量中了,現(xiàn)在我們來(lái)分析一下這個(gè)命令pandoc 1123.md -o 1123.doc,將這個(gè)命令分為四部分,以空格進(jìn)行分隔。pandoc為程序名稱(chēng),后面的1123.md、-0、1123.doc分別是傳入這個(gè)程序main函數(shù)中的3個(gè)參數(shù)。這種使用cmd命令來(lái)運(yùn)行程序達(dá)到自己目的對(duì)于我來(lái)說(shuō)是比較好奇的,下面我就利用.NET來(lái)實(shí)現(xiàn)這種模式。
想要實(shí)現(xiàn)上面的這種效果,那么就不得的了解.NET中Main函數(shù)的使用了。首先,我們要知道.NET中程序Main是如何聲明的。
1 Main函數(shù)的聲明
.NET中的Main的函數(shù)聲明,并沒(méi)有強(qiáng)調(diào)必須要以某種固定的格式進(jìn)行聲明,下面這三種方式進(jìn)行聲明都是可以的。
//no.1
static void Main(string[] args)
{
Console.WriteLine("Hello World");
Console.ReadKey();
}
//no.2
static void Main()
{
Console.WriteLine("Hello World");
Console.ReadKey();
}
//no.3
static int Main(string[] args)
{
Console.WriteLine("Hello World");
Console.ReadKey();
return 1;
}
no.1是帶參數(shù)無(wú)返回值,no.2是不帶參數(shù)無(wú)返回值,no.3是帶參有返回值的,不管哪種聲明方式,.NET都是允許的,這一點(diǎn)不像Java中的Main函數(shù)聲明,Java中的Main函數(shù)聲明,必須要是帶參數(shù)的,而且參數(shù)的必須要是String[] args,連args這個(gè)參數(shù)名稱(chēng)都要一致。
但要注意的是,Main函數(shù)的函數(shù)名必須是大寫(xiě)開(kāi)頭的,即Main可以,而main不可以。我們需要再cmd中根據(jù)命令中傳入的參數(shù)來(lái)執(zhí)行程序不同的功能,因此在這里我們選擇no.1這種聲明形式。
2 使用帶參數(shù)的Main函數(shù)
下面使用代碼實(shí)現(xiàn)處理Program filename -o filename這種命令參數(shù)。代碼如下:
static void Main(string[] args)
{
if (args.Length == 3)
{
//第二個(gè)參數(shù)是-o,則把第一個(gè)參數(shù)的文檔轉(zhuǎn)為第三個(gè)參數(shù)的文檔
if (args[1] == "-o")
{
if (File.Exists(args[0]))
{
if (Check(args[2]))
{
//進(jìn)行轉(zhuǎn)換的邏輯
Console.WriteLine("{0}—》{1}轉(zhuǎn)換成功",args[0],args[2]);
}
else
{
Console.WriteLine(args[1] + "不合法");
}
}
else
{
Console.WriteLine(args[0]+"不存在");
}
}
}
Console.ReadKey();
}
上述代碼就能夠?qū)崿F(xiàn)Program filename -o filename命令的處理。首先程序判斷傳入進(jìn)來(lái)的參數(shù)是不是三個(gè),如果是三個(gè),再判斷第二個(gè)參數(shù)是不是文檔轉(zhuǎn)換命令-o,如果是轉(zhuǎn)換命令就將第一個(gè)參數(shù)的文檔轉(zhuǎn)為第三個(gè)參數(shù)的文檔。
下面測(cè)試一下程序,將程序的可執(zhí)行文件復(fù)制到d盤(pán)和轉(zhuǎn)換文檔同一目錄并改名為MainUsage.exe。在cmd中輸入MainUsage 1123.md -o 1123.docx,效果如下。

注意:cmd中傳入的參數(shù)是以空格進(jìn)行分隔的.
3 總結(jié)
如果想要為外面的程序提供本程序的一些公開(kāi)API接口,那么就需要定義參數(shù)輸入的規(guī)定,然后在Main函數(shù)按照這一規(guī)定,接受并處理傳入進(jìn)來(lái)的參數(shù),并給外界返回結(jié)果。通過(guò)這種方式,外界的程序可以批量的使用該程序提供的某些功能。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 在阿里云函數(shù)計(jì)算上部署.NET Core 3.1的方法
- C# ODP.NET 調(diào)用Oracle函數(shù)返回值時(shí)報(bào)錯(cuò)的一個(gè)解決方案
- 在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲(chǔ)過(guò)程和用戶自定義函數(shù)(下部分)
- 在ASP.NET 2.0中操作數(shù)據(jù)之七十三:用Managed Code創(chuàng)建存儲(chǔ)過(guò)程和用戶自定義函數(shù)(上部分)
- Asp.Net實(shí)現(xiàn)的通用分頁(yè)函數(shù)
- .Net 7函數(shù)Ctor與CCtor使用及區(qū)別詳解
相關(guān)文章
DataGrid 動(dòng)態(tài)添加模板列 實(shí)現(xiàn)代碼
模版控件能讓用戶幾乎不用花費(fèi)任何時(shí)間就創(chuàng)建出復(fù)雜的用戶界面. Asp.net有很多控件都使用了模版技術(shù)(DataGrid就是一個(gè)例子). 而這些控件都工作得很好, 通常, 模版可以被保存為ascx文件以增加復(fù)用性. 很有可能, 事前你是不知道你的控件是怎么布局的, 而且你需要?jiǎng)討B(tài)的添加一些模版以應(yīng)付不同的事件.2009-04-04
asp.net Parameters.AddWithValue方法在SQL語(yǔ)句的 Where 字句中的用法
今天晚上看論壇,有人提問(wèn)說(shuō),Parameters.AddWithValue方法在有些情況下不好使2009-01-01
.net MVC 連接數(shù)據(jù)本地?cái)?shù)據(jù)庫(kù)三種方法總結(jié)
這篇文章主要介紹了.net MVC 連接數(shù)據(jù)本地?cái)?shù)據(jù)庫(kù)三種方法總結(jié)的相關(guān)資料,這里附有代碼實(shí)例,需要的朋友可以參考下2016-12-12
ASP.NET MVC5+EF6+EasyUI后臺(tái)管理系統(tǒng) 微信公眾平臺(tái)開(kāi)發(fā)之資源環(huán)境準(zhǔn)備
這篇文章主要介紹了ASP.NET MVC5+EF6+EasyUI后臺(tái)管理系統(tǒng),微信公眾平臺(tái)開(kāi)發(fā)之資源環(huán)境準(zhǔn)備,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
asp.net web頁(yè)面元素的多語(yǔ)言化(多國(guó)語(yǔ)化)實(shí)現(xiàn)分享
開(kāi)發(fā)的一些系統(tǒng),經(jīng)常要求支持多語(yǔ)言(例如日文,英文等),接下來(lái)介紹如何實(shí)現(xiàn)asp.net開(kāi)發(fā)中web頁(yè)面實(shí)現(xiàn)頁(yè)面元素的多語(yǔ)言化(多國(guó)語(yǔ)化)感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)有所幫助2013-02-02
.net中 發(fā)送郵件內(nèi)容嵌入圖片的具體實(shí)例
這篇文章主要介紹了.net中 發(fā)送郵件內(nèi)容嵌入圖片的具體實(shí)例,需要的朋友可以參考下2014-02-02

