为什么不能将类型“ void”隐式转换为“ bool”?

时间:2020-02-08 17:39:20

标签: c#

$ strace -f -e execve ./prog2b 5678 /hw1/02/
execve("./prog2b ", ["./prog2b", "5678", "/hw1/02/"], [/* 40 vars */]) = 0
key: 5678
Child process 70788. Running grep on 5678 /hw1/02
execve("/usr/local/bin/prog2b", ["prog2b", "grep", "-R", "key","head->path"], [/* 40 vars */]) = -1 ENOENT (No such file or directory)
execve("/usr/bin/prog2b", ["prog2b", "grep", "-R", "key","head->path"], [/* 40 vars */]) = -1 ENOENT (No such file or directory)
execve("/bin/prog2b", ["prog2b", "grep", "-R", "key","head->path"], [/* 40 vars */]) = -1 ENOENT (No such file or directory)
execve("/usr/local/games/prog2b", ["prog2b", "grep", "-R", "key","head->path"], [/* 40 vars */]) = -1 ENOENT (No such file or directory)
execve("/usr/games/prog2b", ["prog2b", "grep", "-R", "key","head->path"], [/* 40 vars */]) = -1 ENOENT (No such file or directory)
Exec failed.. Why?
+++ exited with 1 +++

获取错误:

CS0103当前上下文中不存在名称“ MessageBox” ClassLibrary2 23 Active
错误CS0127由于'Class1.ProcessExited()'返回void,因此对象关键字ClassLibrary2 40不应跟随return关键字Active
错误CS0127由于'Class1.ProcessExited()'返回void,因此对象关键字ClassLibrary2 43不能跟随return关键字Active
错误CS0029无法将类型'void'隐式转换为'bool'ClassLibrary2 65 Active
错误CS0029无法将类型'void'隐式转换为'bool'ClassLibrary2 70 Active
错误CS0103当前上下文中名称'MessageBox'不存在ClassLibrary2 71活动
错误CS0103名称“ MessageBox”在当前上下文中不存在ClassLibrary2 75 Active

使用“ .NETFramework,Version = v4.6.1,.NETFramework,Version = v4.6.2,.NETFramework,Version = v4.7,.NETFramework,Version = v4.7.1,.NETFramework,Version = v4来警告NU1701。 7.2,.NETFramework,Version = v4.8“不是” .NETStandard,Version = v2.1”还原软件包“ SolidWorks.Interop 16.10.0”。此软件包可能与项目不完全兼容。 ClassLibrary2 1

2 个答案:

答案 0 :(得分:0)

void不是类型,更多的是没有类型。

这意味着方法不返回值。您正在尝试从声明为不返回任何值的方法中返回一个值(在这种情况下为true或false)。

如果要返回类型,则必须在方法上指定返回类型

public static bool ProcessExited() 
{
  return true;
}

答案 1 :(得分:0)

进行以下更正:

CS0103名称“ MessageBox”在当前上下文中不存在 ClassLibrary2 23有效

  • 右键单击Project > Add > Reference > Assemblies > System.Windows.Forms

错误CS0127由于'Class1.ProcessExited()'返回void,因此返回 关键字不能后面跟对象表达式ClassLibrary2 43 活跃

  • ProcessExited()的返回类型从Void更改为bool

注意

您可以使用内置属性Process.HasExited来检查关联的进程是否已终止。

 if (process.HasExited==true)
 {
   //This process has exited, do something 
 }