c# - C#将数组传递给数组但仍然出现“无法从'string []'转换为'string'”错误
问题描述
(在 Win 10 Pro 202H 上使用 VS Community 2019 v16.10.4)
我正在开发一个 C# 控制台/winforms 桌面应用程序,它监视一些本地驱动器属性并显示一条状态消息。状态消息显示通过任务计划程序执行(任务以编程方式定义和注册)。UI 使用 Process 方法从控制台应用程序执行。我的意图是将一个参数从调度程序传递给控制台应用程序,执行一些条件逻辑,然后将结果传递给 UI 条目 (Program.cs) 以进行进一步处理。
我正在测试将参数从控制台应用程序传递到 UI 入口点,我收到“参数 1:无法从 'string[]' 转换为 'string'”错误。
代码是:
class Program_Console
{
public static void Main(string[] tsArgs)
{
// based on MSDN example
tsArgs = new string[] { "Test Pass0", "TP1", "TP2" };
Process p = new Process();
try
{
p.StartInfo.FileName = BURS_Dir;
p.Start(tsArgs); // error here
}
public class Program_UI
{
[STAThread]
public void Main(string[] tsArgs)
{
“tsArgs”不是一直是一个数组吗?
编辑:为清楚起见,我使用的是 .NET Framework 4.7.2。问题不在于我传递的内容的一致性,而在于 Process.Start(String, IEnumerable String) 重载。我相信“IEnumerable String”包括string[];它显然没有,因为我能够传递一个纯字符串(不是字符串变量——这也失败了——只是一个硬编码的字符串)。
如果它对某人有用,我的解决方法是将参数保存到控制台应用程序中的 SQLite 表中,然后将它们加载到 UI 应用程序中的列表中。我确信一个更熟练的程序员可以更有效地完成它。
解决方案
Start()
将参数作为数组的唯一方法还需要文件名: Start()
. 您不能通过设置文件名StartInfo
,然后在方法调用中省略该参数。
以下内容应该适合您:
p.Start(BURS_Dir, tsArgs);
推荐阅读
- sql - 在case语句中只需要计算一次
- r - 使用 formattable 格式化表格时隐藏数据表编辑中的 HTML 代码
- php - 如果上传的文档将检查图标,但如果没有,它将有一个 x 图标,我该如何做这个 if else 声明
- sql - 是否可以在同一视图中找到已聚合计算的 MAX 值?
- javascript - 我的 .each() 函数有问题,它给了我一个错误
- javascript - 复杂的螺旋矩阵
- javascript - 使用 vis.js 时间线更新时间线时显示加载屏幕或加载消息
- c# - 无法访问 microsoft-graph 的 SkipToken 方法
- flutter - 如何获取过渡动画的状态
- haskell - Haskell - 如何将两个单子 Maybe 函数组合成一个函数