C#/Visual Studio调试示例

C#/Visual Studio调试示例,c#,visual-studio,debugging,C#,Visual Studio,Debugging,我正在尝试编写一个代码示例,用C#演示Visual Studio 2008中的调试功能。我正在尝试构建一个代码示例,其中可能有一个“不太明显”的错误,这将导致意外的输出 一个不起作用的例子是: static void Main(string[] args) { int a, b; a = args[0]; b = args[1]; if (a = b) Console.WriteLine("They are equal!"); else if (a &

我正在尝试编写一个代码示例,用C#演示Visual Studio 2008中的调试功能。我正在尝试构建一个代码示例,其中可能有一个“不太明显”的错误,这将导致意外的输出

一个不起作用的例子是:

static void Main(string[] args) {
    int a, b;

    a = args[0];
    b = args[1];

    if (a = b) Console.WriteLine("They are equal!");
    else if (a < b) Console.WriteLine("Number 1 is smaller!");
    else Console.WriteLine("Number 1 is larger!");
}
static void Main(字符串[]args){
INTA,b;
a=args[0];
b=args[1];
if(a=b)Console.WriteLine(“它们相等!”);
否则如果(a
这样的事情在阅读代码时不会太明显,但通过调试可以很容易地检测到

我正在寻找这样一个在VisualStudio2008中使用C#的例子


谢谢你的帮助

这里有一个你可以插入的片段

string a = "foo";
a.Replace("foo", "bar");
Console.WriteLine(a);

这里有一个片段,你可以加入

string a = "foo";
a.Replace("foo", "bar");
Console.WriteLine(a);

您可以使用常见的编程错误,如:

  • 忘记
  • 使用

我认为fencepost错误对于调试示例可能最有效。代码可能会在整个数组/集合/任何对象上通过for循环运行,但它可能使用obj.length而不是obj.length-1。

您可以使用常见的编程错误,如:

  • 忘记
  • 使用
我认为fencepost错误对于调试示例可能最有效。代码可能会在整个数组/集合/任何对象上通过for循环运行,但它可能使用obj.length而不是obj.length-1。

类似以下内容:

if (a != b)
  Method1();
  Method2(); // will always be called, even if a == b
…如果省略花括号,则会发生这种情况,例如,其目的是:

if (a != b)
{
  Method1();
  Method2();
}
大概是这样的:

if (a != b)
  Method1();
  Method2(); // will always be called, even if a == b
…如果省略花括号,则会发生这种情况,例如,其目的是:

if (a != b)
{
  Method1();
  Method2();
}

我遇到的其他几个简单错误:

1-在使用foreach对集合进行迭代时从集合中移除项(尽管这会引发异常,因此如果未捕获,则您可能会在不需要调试器的情况下注意到它):


我遇到的其他几个简单错误:

1-在使用foreach对集合进行迭代时从集合中移除项(尽管这会引发异常,因此如果未捕获,则您可能会在不需要调试器的情况下注意到它):


对于这个错误,调试器指出的方式是错误的。如果你只是浏览一下一些代码,就很难看到这个错误(这是我遇到的)。当在调试器中单步执行该代码时,“错误”将立即清除。我同意,调试器在这方面很好。对于这个错误,调试器指出的方式是错误的。如果你只是浏览一些代码(它发生在我身上),就很难看到这个错误。当在调试器中单步执行该代码时,“错误”将立即清除。我同意,调试器在这方面很好。它实际上是为我正在开发的一个小型速成课程而开发的。它实际上是为我正在开发的一个小型速成课程而开发的