VS条件调试
2015-11-30 23:41
260 查看
1、当你使用F11进行dubug工作时,经常会进入到一些不想进入的property或method内部,使用[DebuggerStepThrough]来完成这个任务。其命名空间是System.Diagnostics;
static void Main(string[] args)
{
int a = 20;
int b = 25;
int result = add(a, b);
Console.WriteLine(result);
return;
}
[DebuggerStepThrough]
static int add(int first, int second)
{
int sum = first + second;
return sum;
}
2、
参考:MSDN
利用 Conditional 属性,程序员可以定义条件方法。Conditional 属性通过测试条件编译符号来确定适用的条件。当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了此符号来确定。如果定义了此符号,则执行该调用;否则省略该调用(包括对调用的参数的计算)。
条件方法要受到以下限制:
条件方法必须是类声明或结构声明中的方法。如果在接口声明中的方法上指定
条件方法必须具有
不能用
条件方法不能是接口方法的实现。否则将发生编译时错误。
如果条件方法用在“委托创建表达式”中,也会发生编译时错误
Ps.尽量使用Conditional属性代替#if和#endif
[csharp] view
plaincopy
/*MyConditional.cs*/
//#define DEBUG
using System;
using System.Diagnostics;
class Info
{
//[Conditional("DEBUG")]
public static void Trace(string strMessage)
{
Console.WriteLine(strMessage);
}
[Conditional("DEBUG")]
public static void TraceX(string strFormat,params object[] list)
{
Console.WriteLine(strFormat, list);
}
}
class TestConditional
{
public static void Main()
{
Info.Trace("Cool!");
Info.TraceX("{0} {1} {2}","C", "U", 2001);
}
}
/*
编译方式1:
csc /define:DEBUG /out:1.exe MyConditional.cs
运行结果1:
Cool!
C U 2001
*/
/*
编译方式2:
csc /out:1.exe MyConditional.cs
运行结果2:
Cool!
*/
static void Main(string[] args)
{
int a = 20;
int b = 25;
int result = add(a, b);
Console.WriteLine(result);
return;
}
[DebuggerStepThrough]
static int add(int first, int second)
{
int sum = first + second;
return sum;
}
2、
参考:MSDN
利用 Conditional 属性,程序员可以定义条件方法。Conditional 属性通过测试条件编译符号来确定适用的条件。当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了此符号来确定。如果定义了此符号,则执行该调用;否则省略该调用(包括对调用的参数的计算)。
条件方法要受到以下限制:
条件方法必须是类声明或结构声明中的方法。如果在接口声明中的方法上指定
Conditional属性,将出现编译时错误。
条件方法必须具有
void返回类型。
不能用
override修饰符标记条件方法。但是,可以用
virtual修饰符标记条件方法。此类方法的重写方法隐含为有条件的方法,而且不能用
Conditional属性显式标记。
条件方法不能是接口方法的实现。否则将发生编译时错误。
如果条件方法用在“委托创建表达式”中,也会发生编译时错误
Ps.尽量使用Conditional属性代替#if和#endif
[csharp] view
plaincopy
/*MyConditional.cs*/
//#define DEBUG
using System;
using System.Diagnostics;
class Info
{
//[Conditional("DEBUG")]
public static void Trace(string strMessage)
{
Console.WriteLine(strMessage);
}
[Conditional("DEBUG")]
public static void TraceX(string strFormat,params object[] list)
{
Console.WriteLine(strFormat, list);
}
}
class TestConditional
{
public static void Main()
{
Info.Trace("Cool!");
Info.TraceX("{0} {1} {2}","C", "U", 2001);
}
}
/*
编译方式1:
csc /define:DEBUG /out:1.exe MyConditional.cs
运行结果1:
Cool!
C U 2001
*/
/*
编译方式2:
csc /out:1.exe MyConditional.cs
运行结果2:
Cool!
*/
相关文章推荐
- C#.NET学习笔记5 C#中的条件编译
- 简单记录C# 条件编译
- 巧用可变参数宏、编译器内置宏和printf输出调试信息
- OpenOffice条件编译探讨
- #define、预处理、头文件保护符
- 条件编译 ifndef/define/endif作用和用法
- 黑马程序员——C语言——宏定义、条件编译、文件包含等
- 条件编译 #ifndef、#def、#endif 等宏的意义及其用法
- C/C++预处理详解
- ios笔记--宏定义,条件编译和文件导入笔记
- C语言条件编译及编译预处理阶段
- c语言学习笔记(12)条件编译使用分析
- Rust进阶之条件编译
- Objective-C之成魔之路【13-预处理程序】
- 【原创】头文件、宏定义、条件编译、避免头文件重复包含
- 【每日一C之四】C语言#预处理
- C++条件编译
- 预处理器(未完待续...)
- C语言条件编译及编译预处理阶段
- #pragma once与条件编译