[英]How do I open access database in C# using a file path from a command line argument?
[英]c# How do I take an int argument at the command line
我想在命令行中運行我的程序
dotnet program.dll --number 8
這是我當前代碼的一部分
else if (args[i] == "--number")
{
if (0 > Convert.ToInt32(args[i+1]))
{
num1 = Convert.ToInt32(args[i + 1]);
}
else
{
num1 = 10; //default
Console.WriteLine("The number value must be above 0. Returning to default value");
}
}
但是,由於args[]
是string[]
,命令行表明不接受參數8
。 我想知道如何避免這種情況或在調用后正確使用"--number"
輸入來獲取 int 輸入
您可以執行int.TryParse
而不是Convert.ToInt32
; 您可以測試三種可能性:
dotnet program.dll --number
dotnet program.dll --number bla-bla-bla
dotnet program.dll --number 0
代碼:
else if (args[i] == "--number") {
if (args.Length <= i + 1) {
// dotnet program.dll --number
num1 = 10;
Console.WriteLine("Too few parameters, no number found. Returning to default value");
}
else if (!int.TryParse(args[i + 1], out num1)) {
// dotnet program.dll --number bla-bla-bla
num1 = 10;
Console.WriteLine("The number must be a positive integer. Returning to default value");
}
if (num1 <= 0) {
// dotnet program.dll --number 0
num1 = 10;
Console.WriteLine("The number value must be above 0. Returning to default value");
}
// from now on, num1 is a positive integer number
}
這是另一種常見的方法:
for(int i=0; i<args.Length; i++)
{
if (args[i].StartsWith("--"))
{
switch (args[i].ToLower())
{
case "--number":
if ((i + 1) < args.Length)
{
int number;
string strNumber = args[i + 1];
if (int.TryParse(strNumber, out number))
{
if(number > 0)
{
// ... do something with "number" ...
}
else
{
// number was not positive
Console.WriteLine($"--number Parameter ({args[i+1]}) was not positive!");
}
}
else
{
// parameter failed to convert to an integer
Console.WriteLine($"--number Parameter ({args[i+1]}) was not a valid Integer!");
}
}
else
{
// too few arguments - no parameter to go with command
Console.WriteLine("No parameter provided for --number command!");
}
break;
case "--otherparameter":
break;
default:
// unrecognized command was encountered
Console.WriteLine($"Unrecognized command: {args[i]}");
break;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.