c# - C# 中跨多个源文件的 Typedef

标签 c#

我正在写一个 C 包装器,我想使用一个 typedef 等价物来定义一些类型,这些类型应该在相当多的源文件中有效。这些“类型”只是 [u]int16/32/64_t 的不同别名,但有助于区分函数参数。

可以使用 using MyId=System.Int32;,但据我所知,这需要在每个文件中重新声明...有更好的方法吗?

最佳答案

另一种方法是使用隐式转换为基础类型的结构。

public struct MyHandle
{
    private int _handle;

    internal MyHandle(int handle)
    {
        _handle = handle;
    }

    public static implicit operator int(MyHandle handle)
    {
        return handle._handle;
    }
}

您的内部代码仍然可以通过隐式转换将其用作基础类型(在本例中为 int),但您将其作为强类型公开给用户。您的用户也可以看到 int 值,尽管它对他们来说实际上毫无意义。它们不能直接将 int 转换为您的 Handle 类型,因为构造函数在您的程序集内部并且您没有为另一个方向提供转换运算符。

关于c# - C# 中跨多个源文件的 Typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2782350/

相关文章:

javascript - 通过 Selenium 驱动程序执行 Javascript elementFromPoint

c# - 使用 BouncyCaSTLe 的数字签名验证 - ECDSA with SHA 256, C#

c# - 在 .net 核心 mvc 应用程序上存储用户密码的最佳方式

c# - 在运行时创建类型 "MyClass : OtherClass<MyClass> { }"?

c# - Web API 2 RoutePrefix 不起作用

C# Xaml (Windows Universal App) 打开新页面

c# - 解决 ASP.NET 中不明确的名称

c# - Code First 选择数据 - 相关实体始终返回 null

c# - 避免在 TreeView 中按下按键时选择新节点

c# - 如何只允许将一个文件放入列表框控件c#