C# 特有语法糖
本页只介绍 DarraPnS C# SDK 独有的便捷写法。它们 不是新功能,只是把已有入口包装成更顺手的 C# 写法(元组解构、
ProcessData.In[i].AsInt16这类索引)。
可选,不用不影响标准入口 ——
Connected/State/ErrorCode、ReadInt16/WriteInt16、ProcessData.Read/ProcessData.Write照常用。语法糖只是另一种写法。
命名空间 ——
Darra.PnS。using Darra.PnS;即可,不必另引扩展包。
一、元组解构 (Deconstruct)
C# 7 起的元组解构。DarraPnS 两个重载,一行拆开连接态、运行状态、错误码。
取连接 + 状态
| 写法 | 调用 |
|---|---|
| 标准 API | bool c = device.Connected; PnSState s = device.State; |
| 语法糖 | var (connected, state) = device; |
var (connected, state) = device;
if (!connected)
Console.WriteLine(state);
取连接 + 状态 + 错误码
var (connected, state, error) = device;
if (error != PnSRuntimeErrorCode.Ok)
Console.WriteLine(device.ErrorMessage);
何时用
- 日志 / 诊断循环:少写几遍
device.Connected、device.State。 - switch / pattern matching:
is var (c, s, _)一行拆开。
二、过程数据索引自动转换
ProcessData.In[i] / ProcessData.Out[i] 从当前偏移按类型读写。读 I 用 In,写 Q 用 Out。完整属性表见 过程数据 · 自动转换。
| 写法 | 调用 |
|---|---|
| 标准 API | device.ReadInt16("IW2", out short v); |
| 语法糖 | short v = device.ProcessData.In[2].AsInt16; |
| 标准 API | device.WriteInt16("QW2", 123); |
| 语法糖 | device.ProcessData.Out[2].AsInt16 = 123; |
byte i0 = device.ProcessData.In[0].Content;
short iw = device.ProcessData.In[2].AsInt16;
float f = device.ProcessData.In[8].AsFloat;
device.ProcessData.Out[0].Content = 0x11;
device.ProcessData.Out[2].AsInt16 = 123;
device.ProcessData.Out[8].AsFloat = 1.5f;
写 In[i].Content / In[i].AsInt16 等抛 InvalidOperationException(I 只读)。
何时用
- 就几个字段:不想为几个字去建结构体。
- 字段多:还是
ProcessData.Read/ProcessData.Write。
能力清单
| 分组 | 内容 |
|---|---|
| 运行态解构 | DarraPnS.Deconstruct 两个重载:(connected, state) / (connected, state, error)。error 为 PnSRuntimeErrorCode |
| 过程数据自动转换 | Content / AsInt8 / AsUInt8 / AsInt16 / AsUInt16 / AsInt32 / AsUInt32 / AsInt64 / AsUInt64 / AsFloat / AsDouble / AsBool / GetBit / SetBit / AsValue / WriteValue |