当前位置:  开发笔记 > 编程语言 > 正文

使用公共属性创建动态对象

如何解决《使用公共属性创建动态对象》经验,为你挑选了1个好方法。

我正在尝试创建一个内联创建的对象,但我想访问我在内部创建的属性,如下所示:

object x = new { text = "one", text2 = "two" };

if (x.text == "one") //can not acces this item in the object
{ 
    //do somthing
}

我知道我可以通过创建一个dynamic对象来完成这项工作,但我需要确保我拼写属性正确,我不想要那个.这段代码发生了什么,我无法访问里面的属性,我怎么能不使用动态对象并有机会错误输入属性名称?



1> Jon Skeet..:

使用var作为变量的类型,而不是:

var x = new { text = "one", text2 = "two" };

Console.WriteLine(x.text); // Fine, and suggested by Intellisense
Console.WriteLine(x.text1); // Compile-time error

请注意,这实际上不是"动态对象",因为属性名称和类型在编译时是已知的.所有这一切发生的是,C#编译器将自动为您与相关属性创建一个类型(和构造,以及覆盖Equals,GetHashCodeToString).该类型的名称在C#中是不可说的,但var允许您声明该类型的局部变量,允许编译时检查等.

var功能称为隐式类型的局部变量.

new { ... }功能称为匿名类型.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有