[英]C# check if you have passed arguments or not
我有這個代碼:
public static void Main(string[] args)
{
if (string.IsNullOrEmpty(args[0])) // Warning : Index was out of the bounds of the array
{
ComputeNoParam cptern = new ComputeNoParam();
cptern.ComputeWithoutParameters();
}
else
{
ComputeParam cpter = new ComputeParam();
foreach (string s in args){...}
}
}
也試過if(args.Length==0)
,但它仍然不起作用。
基本上我想知道用戶是否使用參數調用程序。 如果不是,程序將要求輸入。
我怎樣才能做到這一點? 提前致謝。
if(args.Length==0)
應該有效, args[0]
至少需要一個參數才能崩潰。
if(args == null || args.Length == 0)
{
// no arguments
}
else
{
// arguments
}
它是一個數組,並且有兩個場景可能具有傳遞NO參數的含義。 取決於您的語義
args == null
或args.Length == 0
在這種情況下,在執行程序時調用該方法(例如,不將該方法作為單元測試的一部分調用),args參數將永遠不會為空(使第一個測試變為冗余)我已將其包含在內以保證完整性,因為在除main之外的其他方法中可能容易遇到相同的情況
如果按順序測試它們,則不必擔心后一個表達式中的args為null
if(args == null || args.Length == 0){
ComputeNoParam cptern = new ComputeNoParam();
cptern.ComputeWithoutParameters();
}
else
{
ComputeParam cpter = new ComputeParam();
foreach (string s in args){...}
}
這應該也有效:
if (args.Length < 1)
{
//no args passed
}
這應該適用於您的場景:
if (args == null || args.Length == 0)
{
//Code when no arguments are supplied
}
else
{
//Code when arguments are supplied
}
注意在使用||時,如何在args.Length == 0
之前執行check args == null
要么 &&。 這被稱為“條件短路”,其中C#將開始評估第一個條件,如果它是真的,則不會查看第二個條件。 在這種情況下,只有在第一個條件為假時,C#才會評估第二個條件。
假設你的條件如果對齊if(args.Length == 0 || args == null)
並且args
變為null,
它將在第一個條件上拋出異常,盡管第二個條件為真。
在放置條件時我們需要記住這一點。
如果您已經在使用System.Linq
另一個可用選項是使用Any()
擴展名,例如:
public static void Main(string[] args)
{
if (args == null && !args.Any())
{
// No parameters passed.
ComputeNoParam cptern = new ComputeNoParam();
cptern.ComputeWithoutParameters();
return;
}
// process parameters
ComputeParam cpter = new ComputeParam();
foreach (string s in args){...}
}
這也可以寫成:
public static void Main(string[] args)
{
if (!args?.Any() ?? true)
{
// No parameters passed.
ComputeNoParam cptern = new ComputeNoParam();
cptern.ComputeWithoutParameters();
return;
}
// process parameters
ComputeParam cpter = new ComputeParam();
foreach (string s in args){...}
}
這只是顯示了另一個可用的選項,我同意使用.Length
,雖然我會刪除空檢查並使用條件訪問,所以。
if (args?.Length == 0) {
// Code hit if args is null or zero
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.