c# - 为什么在 .NET 中将返回类型 void 声明为 struct?

标签 c# .net vb.net clr

AFAIK void 在编程语言方面没有任何意义。那么为什么在 .Net 框架中它被声明为 struct 呢?

using System.Runtime.InteropServices;

namespace System
{
  /// <summary>
  /// Specifies a return value type for a method that does not return a value.
  /// </summary>
  /// <filterpriority>2</filterpriority>
  [ComVisible(true)]
  [Serializable]
  [StructLayout(LayoutKind.Sequential, Size = 1)]
  public struct Void
  {
  }
}

最佳答案

System.Void 实际上是一种标记类型 - 成员如 MethodInfo.ReturnType必须有 一些 方式来表示 voidSystem.Void 是 .NET 团队选择这样做的方式。

你不应该像普通类型那样使用它。这是一种有效的解决方法 - 有点像 F# Unit type ,但没有完全集成到类型系统中。

关于c# - 为什么在 .NET 中将返回类型 void 声明为 struct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574862/

相关文章:

c# - 在字典中使用对象作为键

c# - 哪个 PID 在 c# 中的给定端口上监听

c# - 创建单文件和多文件程序集的步骤?

c# - 如何使用 Linq-2-Sql 将域逻辑与数据库/持久性逻辑分开?

c# - 解决 PrimativeType.TryParse

c# - 访问 WPF 视频播放器中的帧

c# - 运行太多进程时 Mono 崩溃

c# - 如何使用默认命名空间反序列化 xml?

sql - 我可以在 SQL Server Express 中进行开发以便稍后在完整的 SQL Server 中部署吗?

asp.net - 如何以编程方式将参数传递给 SSRS 报告