C# 函数 out 的使用

 

out 的使用方法;

1、不加out  (int/double/string/object )形参  传值
    只是将值给它,并不是把变量名(箱子)也给它

2、out  实参  传址
    将箱子传给函数

    out传值在传的时候,仅仅是将变量名称(箱子)传给函数
    在进行完成循环体之后,将这个变量以及里面的值一起拿出来

class类下:

public void Jia(int a ,int b)
{
a = a + b;
}

public void Jia1(int a,out int b)
{
b = a + 5;
}

main函数下:

Console.Write("请输入a=");
int a = int.Parse(Console.ReadLine());
Console.Write("请输入b=");
int b = int.Parse(Console.ReadLine());

//Program hanshu = new Program();

//hanshu.Jia(a,b);

//Console.WriteLine(a);

//    

 

//5 是经过调用函数,a、b直接传值,计算得出。  2 是直接接收a的值,输出

 

 

Program hanshu = new Program();
hanshu.Jia1(a, out b);
Console.WriteLine(b);

  7 是经过out传址,并通过a的值计算而得出

 

Console.ReadLine();

转载于:https://www.cnblogs.com/hcx999/p/5725667.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#使用 waveOut 发声可以通过以下步骤实现: 1. 引用 Windows API 函数库 winmm.dll,使用以下语句: ```csharp [DllImport("winmm.dll")] static extern int waveOutOpen(out IntPtr hWaveOut, uint uDeviceID, ref WAVEFORMATEX lpFormat, WaveCallback dwCallback, IntPtr dwInstance, uint dwFlags); ``` 2. 定义 WAVEFORMATEX 结构体,用于设置音频格式: ```csharp [StructLayout(LayoutKind.Sequential, Pack = 2)] struct WAVEFORMATEX { public short wFormatTag; public short nChannels; public int nSamplesPerSec; public int nAvgBytesPerSec; public short nBlockAlign; public short wBitsPerSample; public short cbSize; } ``` 3. 创建音频缓冲区,使用以下语句: ```csharp IntPtr hWaveOut; // waveOut 句柄 WAVEFORMATEX format = new WAVEFORMATEX { wFormatTag = 1, nChannels = 1, nSamplesPerSec = 8000, nAvgBytesPerSec = 8000, nBlockAlign = 1, wBitsPerSample = 8, cbSize = 0 }; waveOutOpen(out hWaveOut, 0, ref format, null, IntPtr.Zero, 0); ``` 4. 将音频数据写入缓冲区,使用以下语句: ```csharp [DllImport("winmm.dll")] static extern int waveOutPrepareHeader(IntPtr hWaveOut, IntPtr lpWaveOutHdr, uint uSize); [DllImport("winmm.dll")] static extern int waveOutWrite(IntPtr hWaveOut, IntPtr lpWaveOutHdr, uint uSize); byte[] buffer = new byte[8000]; IntPtr hBuffer = Marshal.AllocHGlobal(buffer.Length); Marshal.Copy(buffer, 0, hBuffer, buffer.Length); IntPtr hHeader = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WAVEHDR))); WAVEHDR header = new WAVEHDR { lpData = hBuffer, dwBufferLength = (uint)buffer.Length, dwBytesRecorded = 0, dwUser = IntPtr.Zero, dwFlags = 0, dwLoops = 0, lpNext = IntPtr.Zero, reserved = IntPtr.Zero }; Marshal.StructureToPtr(header, hHeader, false); waveOutPrepareHeader(hWaveOut, hHeader, (uint)Marshal.SizeOf(typeof(WAVEHDR))); waveOutWrite(hWaveOut, hHeader, (uint)Marshal.SizeOf(typeof(WAVEHDR))); ``` 以上就是使用 waveOut 在 C# 中发声的基本步骤,具体可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值