【发布时间】:2015-10-22 02:46:11
【问题描述】:
我发现理解 c# 中的引用传递真的很令人困惑。在我的代码中,我有一个带有两个参数的函数
private bool SerialUnEscape(byte serialData, ref byte serialResult)
{
if (((SerialProcessValue)serialData == SerialProcessValue.SERIAL_PACKET_START) ||
((SerialProcessValue)serialData == SerialProcessValue.SERIAL_PACKET_END)) {
serialEscaped = false;
serialResult = 0;
return (true);
}
} else if (serialEscaped) {
if ((SerialProcessValue)serialData == SerialProcessValue.SERIAL_PACKET_ESCAPE_START) {
serialResult = (int)SerialProcessValue.SERIAL_PACKET_START;
serialEscaped = false;
return (true);
}
} else {
serialResult = serialData;
return (true);
}
}
我正在调用函数,引用为 serialDataLsb 和 serialDataMsb。
现在我的困惑是,serialDataLsb 或 serialDataMsb 的值是多少,
是否得到serialResult 的值??
for (i = 0; i < serialElements; i++) {
serialDataLsb = 0;
serialDataMsb = 0;
while (serialBufferWalk < serialIndex) {
if (SerialUnEscape(serialBuffer[serialBufferWalk++], ref serialDataLsb)) {
break;
}
}
while (serialBufferWalk < serialIndex) {
if (SerialUnEscape(serialBuffer[serialBufferWalk++], ref serialDataMsb)) {
break;
}
}
serialElementData[i] = (UInt16)(serialDataLsb + (serialDataMsb << 8));
}
我需要将此代码移植到 python 中,1) 我如何在 python 中实现通过引用传递
我试过用这个
while serialBufferWalk < serialIndex:
if self.SerialUnEscape(serialBuffer[serialBufferWalk += 1],serialDataLsb):
break
while serialBufferWalk < serialIndex:
if self.SerialUnEscape(serialBuffer[serialBufferWalk += 1],serialDataLsb):
break
【问题讨论】:
-
C != C# .. 下次请正确标记问题
-
如果您不需要将值传递给函数,请考虑改用
outkeyword -
在我看来,这段代码更多地是关于 Python 而不是 C#。我建议你只从 Python 返回一个元组...
-
但是如何在 python 中获取 serialDataLsb 或 serialDataMsb 的值
标签: c# python pass-by-reference