是否可以在C#中创建没有类的对象?

Pie*_*ier 15 c# object

在许多语言中,您可以在不创建数据类型的情况下创建对象,并向该对象添加属性.

例如在JS或AS中:

 var myObject = {};
 myObject.myParameter = "hello world";
Run Code Online (Sandbox Code Playgroud)

或者您可以使用C和C++创建结构.

是否有可能在C#中做到这一点?

Roh*_*ats 31

您正在寻找匿名类型.例如 -

var v = new { Amount = 108, Message = "Hello" };
Run Code Online (Sandbox Code Playgroud)

上面的代码将创建一个新object的属性AmountMessage.

  • @Pier,这种方法比动态更有效,因为它实际上是在编译时定义一个类型.如果您需要将一些数据组织在一起以供本地使用(例如,在执行组合来自多个源的数据的LINQ操作时),则首选方法.动态更灵活(您可以根据需要继续添加字段),但更重. (4认同)
  • @Pier他们是完全不同的东西.匿名类在编译时确定.因此,您无法在运行时添加/更改属性. (4认同)

Pra*_*thy 13

是的,有ExpandoObjectSystem.Dynamicnamespace.You可以在飞行就像你在其他动态语言做添加属性

dynamic dynObject = new ExpandoObject();
dynObject.someProperty= "Value";
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx


L.B*_*L.B 5

阅读有关ExpandoObject 的信息

dynamic myObject = new ExpandoObject();
myObject.myParameter = "hello world";

Console.WriteLine(myObject.myParameter);
Run Code Online (Sandbox Code Playgroud)