class MyClass
{
static void Main(string[] args)
{
object o = new { };
System.Console.WriteLine(o.GetType()); System.Console.ReadKey();
}
}//<>f__AnonymousType0
{
static void Main(string[] args)
{
object o = new { };
System.Console.WriteLine(o.GetType()); System.Console.ReadKey();
}
}//<>f__AnonymousType0
解决方案 »
- 用什么存储数据结构?
- 怎样随机生成16字节的byte数组?
- C# 事件继承问题~! 谢谢~!
- 如何在编译时将所有引用的dll文件加载到debug目录下?
- 怎么制做背景逶明的logo
- 基础问题,创建实例与直接调用有什么区别???
- c#有没有关闭网页窗口这个功能呀?(在线等)_
- 想了解一下C#中几个关键字的意思,百度未找到
- 实在没招了:将dataSet.Tables[0]用sqlDataAdapter(已从SQL数据库中读出一张表)填充后,用DataColumnCollection增加了一个自定义的已赋
- Winform下类中的string属性在VS属性栏的值输入框问题
- C#工程如何加载自定义控件
- 一个事件问题
这段代码没有语法错误,
而且能够正常运行。追加一个问题,
这是什么样的语法?
我是VS2008,Console类型输出结果为:
<>f__AnonymousType0
@谢谢,键健
长见识了,第一次接触匿名类型传统的类型就这些:类|结构|数组|委托|枚举|接口能不能具体讲一下,
特别是他的根类型是什么
(非指object,象数组是System.Array)
不允许包含其他种类的类成员(如方法或事件)。匿名类型不能强制转换为除 object 以外的任何接口或类型。 是不是能跟传统类型相提并论~~
匿名类型是直接从对象派生的引用类型。尽管应用程序无法访问匿名类型,但编译器仍会为其提供一个名称。从公共语言运行时的角度来看,匿名类型与任何其他引用类型没有什么不同,唯一区别在于匿名类型无法强制转换为除 object 以外的任何类型。如果两个或更多个匿名类型以相同的顺序具有相同数量和种类的属性,则编译器会将这些匿名类型视为相同的类型,并且它们共享编译器生成的相同类型信息。匿名类型具有方法范围。若要向方法边界外部传递一个匿名类型或一个包含匿名类型的集合,必须首先将匿名类型强制转换为对象。但是,这会使匿名类型的强类型化无效。如果必须存储查询结果或者必须将查询结果传递到方法边界外部,请考虑使用普通的命名结构或类而不是匿名类型。匿名类型不能像属性一样包含不安全类型。由于匿名类型上的 Equals 和 GetHashCode 方法是根据属性的 Equals 和 GetHashcode 定义的,因此仅当同一匿名类型的两个实例的所有属性都相等时,这两个实例才相等。
直接继承至object所以不能算结构,奇了怪了,跟传统类型还真的不一样。!dso
PDB symbol for mscorwks.dll not loaded
OS Thread Id: 0x1dcc (7628)
ESP/REG Object Name
0012f09c 01377ea4 <>f__AnonymousType0
0012f0c0 01377ea4 <>f__AnonymousType0
0012f0c8 01377ea4 <>f__AnonymousType0
0012f160 01377ea4 <>f__AnonymousType0
0012f204 01377ea4 <>f__AnonymousType0
0012f208 01377ea4 <>f__AnonymousType0
0012f214 01377ea4 <>f__AnonymousType0!do 01377ea4
Name: <>f__AnonymousType0
MethodTable: 009e32c8
EEClass: 009e1388
Size: 12(0xc) bytes
Fields:
None!dumpclass 009e1388
Class Name: <>f__AnonymousType0
Parent Class: 0339d08c
Module: 009e2e58
Method Table: 009e32c8
Vtable Slots: 4
Total Method Slots: 5
Class Attributes: 100100
NumInstanceFields: 0
NumStaticFields: 0!dumpclass 0339d08c
Class Name: System.Object
mdToken: 02000002 (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
Parent Class: 00000000
Module: 03362000
Method Table: 0339d0f0
Vtable Slots: 4
Total Method Slots: e
Class Attributes: 102001
NumInstanceFields: 0
NumStaticFields: 0
此结构非彼结构,我说是一个数据结构,不是struct
这个值得研究一下:
using System;class MyClass
{
static void Main(string[] args)
{
object o1 = new { };
object o2 = new { };
object o3 = new { i = 1, s = "abc" };
object o4 = new { s = "eee", i = 1 }; f__AnonymousType type = new System.Console.WriteLine("o1:{0},o2:{1},o3:{2},o4:{3}", o1.GetType(), o2.GetType(), o3.GetType(), o4.GetType()); System.Console.ReadKey();
}
}//o1:<>f__AnonymousType0,
//o2:<>f__AnonymousType0,
//o3:<>f__AnonymousType1`2[System.Int32,System.String],
//o4:<>f__AnonymousType2`2[System.String,System.Int32]f__AnonymousType这个也算是基类型的,
与传统的基不一样的地方在于:
(1)不能显式引用
(2)与泛型挂钩了
static void Main(string[] args)
{
var stu = new { Name = "XiaoShan", Age = 21 };
Console.WriteLine(stu.Name);
}楼主不妨试一下这段代码,很简单,一看就懂了
http://space.cnblogs.com/question/3412/using System.Collections.Generic;
using System;class P
{
delegate string X(string name);
static void Main()
{
var obj = new { Name = "crab",
Age = 23,
SayHello = (X)((string name) => string.Format( "Hello, {0}!", name ))
};
}
}