C# 从Python到C的转换
我在将这个小类从Python转换为C时遇到了一些麻烦,有人能帮我吗 到目前为止,我有:C# 从Python到C的转换,c#,python,C#,Python,我在将这个小类从Python转换为C时遇到了一些麻烦,有人能帮我吗 到目前为止,我有: public class objDict { public objDict(Dictionary<object, object> obj) { foreach(KeyValuePair<object, object> kvp in obj) { } } } 提前谢谢 应该是这样的: class objDict
public class objDict
{
public objDict(Dictionary<object, object> obj)
{
foreach(KeyValuePair<object, object> kvp in obj)
{
}
}
}
提前谢谢 应该是这样的:
class objDict : Dictionary<object, object>
{
// __init__
public objDict(IDictionary obj = null)
{
if (obj == null)
{
return;
}
foreach (DictionaryEntry kv in obj)
{
if (kv.Value is IDictionary)
{
// Not sure if it should be CultureInfo.InvariantCulture or CultureInfo.CurrentCulture
this.Add(CultureInfo.InvariantCulture.TextInfo.ToTitleCase(kv.Key.ToString()), new objDict((IDictionary)kv.Value));
}
else
{
this.Add(kv.Key, kv.Value);
}
}
}
// __getitem__
public object this[object key]
{
get
{
return this[key];
}
}
// __repr__
public string ToString()
{
return string.Join(", ", this.Select(p => string.Format("{0} : {0}", p.Key, p.Value)));
}
}
我要说的是,如果我们排除内部字典将被浅层克隆,并且有一个有用的.ToString,那么我看不到比经典字典更好的东西。有一个免费的在线工具可以自动将Python转换为C。结果并不完美,但消除了很多移植流控制等方面的痛苦
到目前为止你有什么?还有,为什么不直接使用?为什么需要这样做?你想解决什么问题?这个类打算做什么?我想把它从Python转换成C。我已经做了大部分工作,我只是停留在我发布的类上。看看Python代码,似乎你真正想做的是将JSON反序列化成一个对象图。检查此处的任何答案是否有帮助:
class objDict : Dictionary<object, object>
{
// __init__
public objDict(IDictionary obj = null)
{
if (obj == null)
{
return;
}
foreach (DictionaryEntry kv in obj)
{
if (kv.Value is IDictionary)
{
// Not sure if it should be CultureInfo.InvariantCulture or CultureInfo.CurrentCulture
this.Add(CultureInfo.InvariantCulture.TextInfo.ToTitleCase(kv.Key.ToString()), new objDict((IDictionary)kv.Value));
}
else
{
this.Add(kv.Key, kv.Value);
}
}
}
// __getitem__
public object this[object key]
{
get
{
return this[key];
}
}
// __repr__
public string ToString()
{
return string.Join(", ", this.Select(p => string.Format("{0} : {0}", p.Key, p.Value)));
}
}
namespace Namespace {
using System;
public static class Module {
public class objDict
: object {
public objDict(object obj) {
foreach (var _tup_1 in obj) {
var k = _tup_1.Item1;
var v = _tup_1.Item2;
if (v is dict) {
setattr(this, _to_str(k).title(), objDict(v));
} else {
setattr(this, k, v);
}
}
}
public virtual object @__getitem__(object val) {
return this.@__dict__[val];
}
public virtual object @__repr__() {
return String.Format("{%s}", ", ".join(from _tup_1 in this.@__dict__.Chop((k,v) => (k, v))
let k = _tup_1.Item1
let v = _tup_1.Item2
select String.Format("%s : %s", k, repr(v))).ToString());
}
}
}
}