如何实现typeof和sizeof

Rom*_*key 5 c#

我想知道如何实现typeofsizeof关键字.

如果我想实现我自己什么'x'of()表情好像timeof(object)在那里object含有DateTime作为它的一个特性还是什么?

Tim*_* S. 10

最简洁的答案是不.typeof并且sizeof是C#语言的一部分,你不能(直接)添加像它们这样的表达式.做你正在问的正常方法是简单地访问该属性:

DateTime time = myObject.SomeDateTimeProperty;
Run Code Online (Sandbox Code Playgroud)

你可以制定一个方法来做到这一点(虽然这对于这么简单的事情没有意义).例如,如果您使用了界面:

public interface ICreateTime
{
    DateTime CreateTime { get; }
}

public DateTime TimeOf(ICreateTime myObject)
{
    return myObject.CreateTime;
}
Run Code Online (Sandbox Code Playgroud)

更具体地讲:typeofsizeof执行你实现方法一样.相反,typeof转换为ldtoken [type]call System.Type.GetTypeFromHandle IL指令,并sizeof成为常量.例如

Type t = typeof(int);
int s = sizeof(int);
Run Code Online (Sandbox Code Playgroud)

编译为:

IL_0001:  ldtoken     System.Int32
IL_0006:  call        System.Type.GetTypeFromHandle
IL_000B:  stloc.0     // t
IL_000C:  ldc.i4.4    // the constant 4, typed as a 4-byte integer
IL_000D:  stloc.1     // s
Run Code Online (Sandbox Code Playgroud)