获取内联对象键和值

时间:2017-09-18 23:06:09

标签: c# loops object foreach

我是c#的新手,并且在循环中坚持使用geting对象键和值,我甚至无法创建通过对象记录的正确工作循环。

定义对象的主要功能

void Auth()
{
    var data = new {
        username = Username.text, 
        password = Password.text
    };

    networkManager.SendData("LOGIN", data);
}

在该数据对象经过多个函数之后,最终来到这个函数。

    public string format(object nObject)
    {
        foreach (var row in nObject) {
            Debug.Log(row.Key);
        }
    }

是否有任何方法可以创建简单的对象并在main函数外部循环它,并且可以检索Key(用户名,密码)和Value(Username.text,Password.text),因为字符串也要注意对象并不总是包含相同的数据,基本上我只想操纵对象内的数据。

或许还有其他一些更好/更正确的方法吗?

请告知。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你想通过所有对字段和它的值进行枚举。  因为你传递匿名类型我看到两个选项:通过反射和通过JSON的对象反序列化。 第一种方法:

public void format(object nObject)
{
    foreach (var row in nObject.GetType().GetProperties())
    {
        Debug.Log($"Key{row.Name}={row.GetValue(nObject)}");
    }
}

如果您计划使用复杂的值类型,第二种方法是好的:

public void format(object nObject)
{
    var obj = JObject.FromObject(nObject);
    foreach (var row in obj)
    {
        var key = row.Key;
        string value;
        switch (row.Value.Type)
        {
            case JTokenType.Array:
                value = ((JArray) row.Value).Count.ToString();
                break;
            case JTokenType.Boolean:
                value = ((Boolean)row.Value)? "Да" : "Нет";
                break;
            default:
                value = row.Value.ToString();
                break;
        }

        Debug.Log($"Key{key}={value}");
    }
}

我在这里使用Json.NET

答案 1 :(得分:1)

您应该使用字典,并使用foreach

循环它
foreach(KeyValuePair<string, string> entry in myDic)
{
    // do something with entry.Value or entry.Key
}

您应该查看MS文档here