我这个程序在这里:
namespace TodoPlus {
using System.Diagnostics;
public class LameProg {
public LameProg() {}
public static void Main(string[] args) {
int a = 2;
int b = 3;
Debug.Assert(a == b, "Bleh");
System.Console.WriteLine("Haha it didn't work");
}
}
}
Run Code Online (Sandbox Code Playgroud)
不知何故,Debug.Assert无效.
我正在使用Mono 2.10.5,这是我用来编译和执行的:
$ dmcs LameProg.cs
$ mono ./LameProg.exe
我怎样才能做到这一点?我希望它与C中的断言宏具有相同的效果,也就是说它应该彻底崩溃程序.是否可以使用Debug.Assert执行此操作或是否有其他功能可以实现此目的?
谢谢.
dtb*_*dtb 11
Debug.Assert用[ConditionalAttribute("DEBUG")]注释.这意味着除非定义了DEBUG预处理程序符号,否则编译器将删除所有调用.试试这个:
$ dmcs -d:DEBUG LameProg.cs
Run Code Online (Sandbox Code Playgroud)当一个断言命中时,Mono没有显示像Microsoft的.NET实现那样的对话框.您需要设置 TraceListener,例如
$ export MONO_TRACE_LISTENER=Console.Error
$ mono LameProg.exe
Run Code Online (Sandbox Code Playgroud)Debug.Assert调用通常用于调试版本,并从发布版本中删除.如果要确保某个条件成立,并且此检查应该存在于发布版本中,请使用if语句和throw异常:
public static void Main(string[] args)
{
int a = 2;
int b = 3;
if (a != b)
{
throw new Exception("Bleh");
}
System.Console.WriteLine("Haha it didn't work");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |