c# - Python(到 C#)方法转换

标签 c# python arrays

我正在尝试在 C# 中重现此函数:

def sendData(self, eventCodes, data = None):
    if data:
        self.push('\x01'.join(map(str, [eventCodes] + data)) + "\x00")
    else:
        self.push(eventCodes + "\x00")

我相信 eventCodes 是一个字符串,data 是一个数组。我不明白 map() 在这里是如何工作的。我认为它遍历整个数组,为每个项目(在本例中为“str”)执行一个函数。但是,我看不出 [eventCodes] + data 是一个数组。

我有兴趣在 C# 中获取此过程 '\x01'.join(map(str, [eventCodes] + data)) + "\x00"的结果。

最佳答案

map(x, y) 类似于此 C# 代码:

y.Select(item => x(item))

所以这样:map(str, [eventCodes] + data) 类似于这样:

([eventCodes] + data).Select(item => str(item))`
 ^-----------------^                 ^-^

突出显示的部分还不是有效的 C# 代码。什么是str,好吧,也许我们可以用ToString代替它:

([eventCodes] + data).Select(item => item.ToString())`
 ^-----------------^                 

[eventCodes] + data 将包含单个字符串 eventCodes 的列表与 data 中的字符串集合连接起来,因此我们有:

new[] { eventCodes }.Concat(data).Select(item => item.ToString())

往外挪一步,这个:

`\x01`.join(...)

在 C# 中:

string.Join("\x01", ...)

然后我们得到这个:

string.Join("\x01", new[] { eventCodes }.Concat(data)
    .Select(item => item.ToString()))

final方法:

public void sendData(string eventCodes, IEnumerable<string> data = null)
{
    if (data != null)
        push(string.Join("\x01", new[] { eventCodes }
            .Concat(data.Select(item => item.ToString()))) + "\x00");
    else
        push(eventCodes + "\x00");
}

我个人会按如下方式更改代码:

public void sendData(string eventCodes, IEnumerable<string> data = null)
{
    string element;
    if (data != null)
        element = string.Join("\x01", new[] { eventCodes }
            .Concat(data.Select(item => item.ToString())))
    else
        element = eventCodes;
    push(element + "\x00");
}

关于c# - Python(到 C#)方法转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682596/

相关文章:

python - Paramiko 更改在版本 2.1 和 2.4 之间使用字符串密码打破了 "connect"-ish

python - Keras 中不同的输入/输出形状

javascript - 检查用户输入是否等于数组值

C#:如何将字符串散列为 RIPEMD160

c# - 如何从 ViewModel 访问 View 控件?

c# - 如何使用反射或其他准确方法获取 Controller 内部的当前 ASP.NET 核心 Controller 方法名称

python - PyCharm Community 2017.2 中 undefined variable 没有警告

java - 除了第一个索引上的计数外,输出的值都是正确的

javascript - 拉取一组对象

c# - 多维数组列排序