“\ a”和Console.Beep()方法是否发出相同的蜂鸣声?

时间:2013-02-10 13:50:31

标签: c# .net escaping beep

\aescape sequence,表示字符常量上的铃声警报。来自 MSDN Console.Beep()方法说明:

  

通过控制台扬声器发出哔哔声。

让我们考虑一下这个示例代码:

public static void Main(string[] args)
{
     Console.WriteLine("\a");
     Console.Beep();
}

此代码会发出2声嘟嘟声,它们听起来和我一样。现在我需要看到证据。

当我反编译Console.Beep()方法时,它使用 kernel32.dll 中的Win32Native.Beep;

public static void Beep(int frequency, int duration)
{
    Win32Native.Beep(frequency, duration);
}

他们的频率和持续时间可能不同,我对这些内容没有任何说明,但他们的来源是相同的(Win32Native.Beep)? \a使用哪个来源进行铃声提醒

1 个答案:

答案 0 :(得分:11)

这是我从检查音频时可以收集到的(Windows 7 64位(是的,我必须重新启动到Windows,我就是那个专用:))。我使用Fraps录制了音频,所以它应该是可靠的。

这是我用来检查它们的代码:

using System;
using System.Threading;

namespace StackOverflow
{
    class Program
    {
        private static void Main(string[] args)
        {
            Console.Write("\a");
            Thread.Sleep(500);
            Console.Beep();
        }
    }
}

这些是Audacity中的两首曲目(Console.Write('\a')是上一曲,Console.Beep()是下曲目。

Two beeps

在我放大轨道的任何地方,正弦波彼此完全匹配,并且它们具有完全相同的持续时间,因此我必须得出结论,它们实际上是相同的(在Windows 7上是)。