我们在手机系统中使用的桌面客户端有一个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”。在测试中,似乎你可以在数字前连接任何东西,但忽略后面的任何东西。
你知道为什么会这样吗?
感谢您提供任何意见。
答案 0 :(得分:2)
ASCII字符0(在调试器中表示为\ 0)有时用于终止字符串。如果您正在处理类似COM设备等的事情,可能就是这种情况。
例如:
Debug.WriteLine("a\0b");
只会输出" a"。不打印ASCII字符0,也不打印任何后续字符。当然,在这样的字符串中追加一些东西意味着原始字符串中的\ 0之后的任何内容都不会出现。
如果您正在处理COM,请查看调试器中的字符串,看看\ 0是否在最后。
您可以使用替换删除它:
Debug.WriteLine(number.Replace("\0", "") + "abc");