C#中的in、out、ref、in T、out T、[In]、[Out]关键字解析
- 作者: 五速梦信息网
- 时间: 2026年04月20日 04:36
{
T Create();
}
当我们将T用作形参输入的时候,会直接编译失败,请看下图:

## [In](参数属性)
作用:用于 P/Invoke(平台调用),表示参数是输入参数。
特点:通常与 ref 或 out 一起使用,明确指定参数的方向。
使用场景:用于与非托管代码交互时,指定参数的方向。
请看以下的P/Invoke调用,我们通过调用Windows C++的Api弹出对话框,其中,输入参数我们是可以用[In]关键字修饰的,这个通常情况下可以忽略不写。
```csharp
[DllImport("user32.dll")]
static extern int MessageBox([In] IntPtr hWnd, [In] string text, [In] string caption, uint type);
[Out](参数属性)
作用:用于 P/Invoke(平台调用),表示参数是输入参数。
特点:通常与 ref 或 out 一起使用,明确指定参数的方向。
使用场景:用于与非托管代码交互时,指定参数的方向。
请看以下的P/Invoke调用,当我们调用GetComputerName Api的时候,Api会返回计算机名称,但是这个名称是在lpBuffer变量中返回的。也就是说,在方法的内部对lpBuffer变量进行了赋值。这个参数我们把它叫做输出参数。用[Out]修饰。
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool GetComputerName([Out] StringBuilder lpBuffer, ref uint nSize);
相关文章
-
C#学习:构建一个更真实的基于LLM的简历评估系统
C#学习:构建一个更真实的基于LLM的简历评估系统
- 互联网
- 2026年04月20日
-
C#线程池核心技术:从原理到高效调优的实用指南
C#线程池核心技术:从原理到高效调优的实用指南
- 互联网
- 2026年04月20日
-
C#实现MCP Client 与 LLM 连接,抓取网页内容功能!
C#实现MCP Client 与 LLM 连接,抓取网页内容功能!
- 互联网
- 2026年04月20日
-
CAD 手机看图软件:工地人必备的图纸处理神器
CAD 手机看图软件:工地人必备的图纸处理神器
- 互联网
- 2026年04月20日
-
CAD手机看图:支持多格式图纸解析的手机看图工具
CAD手机看图:支持多格式图纸解析的手机看图工具
- 互联网
- 2026年04月20日
-
Canvas学习笔记,记录使用过程中遇到的一些问题
Canvas学习笔记,记录使用过程中遇到的一些问题
- 互联网
- 2026年04月20日





