c# Environment.GetCommandLineArgs
官方釋義:返回包含當前進程的命令行參數的字符串數組
最開始接觸這個api是unity自動打包時讀取傳入參數的,但是當時一直不清楚這個參數是通過什么樣的形式去傳遞的,直到今天寫批處理時才明白是怎么回事。
首先這個參數獲取到的值默認有一個,即該進程的文件名(“***.exe”),然后其他參數參數才是命令行傳入的參數,傳入方式為在命令行執行程序,后接參數。測試一下,首先寫一個c#控制臺程序,做簡單的輸出,代碼如下:
static void Main(string[] args){// Invoke this sample with an arbitrary set of command line arguments.String[] arguments = Environment.GetCommandLineArgs();for (int i = 0; i < arguments.Length; i++){Console.WriteLine(arguments[i]);}}vs在生成解決方案時,會在項目的bin\debug下生成一個可執行的exe應用程序,啟動實際上也是在執行這個生成的exe,我這里運行之后輸出:?E:\VsProjects\CommandTest\CommandTest\bin\Debug\CommandTest.exe。即上面說到的該進程的文件名。
接下來測試這個api,需要通過命令行執行上面的exe程序,然后后跟空格,接參數,即可被該api獲取到,這里拿官網的參數舉例,參數分割標準引用官網的話:
命令行參數由空格分隔。?可以使用雙引號 (") 在參數中包含空格。?但是,單引號 (') 不提供此功能。
如果兩個或偶數個反斜杠后跟雙引號,則前面的每個反斜杠對被一個反斜杠替代,并且雙引號被刪除。?如果奇數個(包括僅僅一個)反斜杠后跟雙引號,則前面的每個反斜杠對被一個反斜杠替代,其余的反斜杠被刪除;但在此情況下,雙引號不會被刪除。
測試結果如下,注意(E:\VsProjects\CommandTest\CommandTest\bin\Debug\CommandTest.exe)不是命令行語句,是當前進程名的輸出:
最初的困擾是這些參數是通過怎么樣的方式傳入,現在終于明白了。
總結
以上是生活随笔為你收集整理的c# Environment.GetCommandLineArgs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openCV中sobel边缘增强
- 下一篇: C# Environment