我是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),因为字符串也要注意对象并不总是包含相同的数据,基本上我只想操纵对象内的数据。
或许还有其他一些更好/更正确的方法吗?
请告知。
答案 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