什么是'~';在C#中调试时是什么意思?

什么是'~';在C#中调试时是什么意思?,c#,debugging,tilde,C#,Debugging,Tilde,以下是我的方法: public static void send(byte[] packet) { Console.Write(DateTime.Now.ToString() + ": "); foreach (byte b in packet) { Console.Write(b.ToString("X2") + " "); } Console.WriteLine(); if (connected) { t

以下是我的方法:

public static void send(byte[] packet)
{
    Console.Write(DateTime.Now.ToString() + ": ");
    foreach (byte b in packet)
    {
        Console.Write(b.ToString("X2") + " ");
    }
    Console.WriteLine();
    if (connected)
    {
        try
        {
            connection.Socket.Send(packet);        
        }
        catch (Exception)
        {
            throw new Exception("Can't send packet");
        }
    }        
}
这是来电者

public void addPacket(PacketProcessed packet) 
{
    int messageEvent = (int)Event.Type.Normal;
    int speed = 0;
    foreach (MessageProcessed message in packet.messages)
    {
        if ((currentlyEvent & (int)Event.Type.Speed) == (int)Event.Type.Speed)
        {
            if (Math.Abs(message.xSpeed) >= this.speedLimit - this.speedLimit * 0.1)
            {
                messageEvent |= (int)Event.Type.Speed;
                speed = Math.Max(speed, (int)Math.Abs(message.xSpeed));
            }
        }
        else
        {
            if (Math.Abs(message.xSpeed) >= this.speedLimit)
            {
                messageEvent |= (int)Event.Type.Speed;
                speed = Math.Max(speed, (int)Math.Abs(message.xSpeed));
            }
        }
    }
    this.currentlyEvent = messageEvent;
    if (this.currentlyEvent != historyEvent)
    {
        byte[] bb = ProtocolBuilder.buildProtocal(0xE0 + location, currentlyEvent, (byte)speed);
        TCPTalker.send(bb);    // <--- This line call above (send) method.
    }
    historyEvent = currentlyEvent;
    packetStorage.Add(packet);
}
我看到“~”出现在调试字符串出现之前。 有时输出窗口会显示~then~然后我的调试字符串看起来像~~4/10/2013 3:12:01 PM:7E 00


“~”是什么意思?

它没有任何预定义的含义。我会检查您的其他代码,查看对
控制台的调用;完全猜测时,可能会检查任何终结器-可能它们有一些输出,例如:

class Foo {
    ~Foo() {
        #if DEBUG
        // show that I got collected; hey I know - let's write to the console...
        // that won't confuse *anyone*
        Console.Write("~");
        #endif
    }
}

而是全局搜索(ctrl+shift+f)对于
~
应该找到它。

你确定你没有在程序中的其他地方自己编写它吗?你能在一个简短但完整的程序中重现它吗?它肯定不包含对Console.WriteLine的任何其他调用。@Jon
Console.WriteLine
而不是
Console.WriteLine
,可能吧,因为它不是直线-terminated@MarcGravell:非常正确。谢谢你!我已经检查过了。但是什么也没找到。谢谢马克·格雷威尔!我已经做过了。但什么也找不到。@Pruk和for
控制台。是否写入
?另外:您正在使用哪些其他库(如果有)?有没有可能是他们中的一个?事情是这样的:.NET不会无缘无故地向stdout添加
~
。它来自应用程序(您的代码或dll)中的某个地方,该应用程序选择性地执行此操作。很抱歉,我的项目没有其他库。我正在使用VC#2010 Express。希望这些信息能有所帮助。。
class Foo {
    ~Foo() {
        #if DEBUG
        // show that I got collected; hey I know - let's write to the console...
        // that won't confuse *anyone*
        Console.Write("~");
        #endif
    }
}