字符串无法连接的问题

时间:2017-05-17 14:17:08

标签: c#

我们在手机系统中使用的桌面客户端有一个API,可以让我们在铃声响起时捕获手机的电话号码。 要使用API​​,请引用DLL并指定。

using TelephonyProxy;

public class program
{

    private static Commander commander;
    private static Listener listener;

    static void Main()
    {
        commander = new Commander();
        listener =  new Listener();
        SubscribeToListener();
    }

    private static void SubcribeToListener()
    {
        Debug.WriteLine("Subscribe To Listener");
        listener.Connect += OnConnect;
        listener.Disconnect += OnDisconnect;
        listener.Offering += OnOffering;
        listener.Ringback += OnRingback;
    }


    private static void OnOffering(string name, string number)
    {
        Debug.WriteLine(number + “abc”);
    }
}

问题是OnOffering被正确调用,电话号码在数字变量中。但是,调试仅显示数字而不是“abc”。在测试中,似乎你可以在数字前连接任何东西,但忽略后面的任何东西。

你知道为什么会这样吗?

感谢您提供任何意见。

1 个答案:

答案 0 :(得分:2)

ASCII字符0(在调试器中表示为\ 0)有时用于终止字符串。如果您正在处理类似COM设备等的事情,可能就是这种情况。

例如:

Debug.WriteLine("a\0b");

只会输出" a"。不打印ASCII字符0,也不打印任何后续字符。当然,在这样的字符串中追加一些东西意味着原始字符串中的\ 0之后的任何内容都不会出现。

如果您正在处理COM,请查看调试器中的字符串,看看\ 0是否在最后。

您可以使用替换删除它:

Debug.WriteLine(number.Replace("\0", "") + "abc");