代码之家  ›  专栏  ›  技术社区  ›  Mark Pim

表示USB设备的C类

  •  0
  • Mark Pim  · 技术社区  · 14 年前

    我正在用C语言为USB设备编写一个包装类(使用P/Invoke与之通信)。设备在使用前需要发送一条打开的消息,完成后需要发送一个关闭方法。在我的构造函数中,我想尝试打开设备并返回 null 如果那个电话因为任何原因失败了。我也会写一个 Dispose() 它调用设备上的Close方法。

    这是一种明智的编码方式吗?或者我应该分开 ConnectToDevice 方法?

    通过将其放入构造函数,我希望类的用户可以简单地编写:

    USBDevice myDevice = new USBDevice()
    
    if (myDevice != null) {
      myDevice.PerformAction();
      myDevice.Dispose();
      myDevice = null;
    }
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Brian Rasmussen    14 年前

    如果构造函数失败,引用将始终为空。但是,如果您在错误发生之前分配了一些可释放的资源,则调用方无法对该实例调用Dispose,因为它没有引用该实例。因此,如果要在构造函数中执行此操作,则需要确保构造函数正常失败。

    为了简单起见,我可能会使用connect方法。