好的,所以在javascript中,我们可以声明一个像这样的对象,
var obj={name:"Irshu",age:22};
console.log(obj);
我们如何在c#中做同样的事情?我问的原因是因为我的函数需要返回一个字符串和一个bool。我不想为它创建一个类,我不想使用字典。还有其他选择吗?
public void Message(){
var obj=GetObject(val);
Messagebox.Show(Convert.ToString(obj.ind));
}
public object GetObject(string val){
return new {ind=val,flag=true};
}
这是无效的,不是吗?
答案 0 :(得分:3)
.Net从.NET 4开始支持ExpandoObject
。
http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject%28v=vs.110%29.aspx
它允许您声明对象并在javascript中添加属性。
传统上它适用于JS互操作,我不能推荐它用于生产工作。 Tuple<T>
更合适,因为您可以免费获得强力打字。最终,您将编写更少的代码并减少运行时错误。
您的代码中包含匿名类型。匿名类型不能存在于声明它们的范围之外。通常,我们使用它们将LINQ结果转换为临时对象。
答案 1 :(得分:1)
您无法从方法返回匿名类型。你可以这样做:
public void Message(){
var obj = new { ind = "oaiwejf", flag = true };
Messagebox.Show(obj.ind);
}
修改强>
选中此MSDN article
答案 2 :(得分:0)
public void Message()
{
var obj=GetObject("Irshu");
var y= Cast(obj, new { ind= "", flag= true });
Messagebox.Show(y.ind); //alerts Irshu
}
public object GetObject(string val){
return new {ind=val,flag=true};
}
T Cast<T>(object obj, T type)
{
return (T)obj;
}