5 c# java reflection
今天我接受了面试,有人问我,如果下面的代码是使用反射的一个很好的例子/案例C#:
public abstract class Level{
public string LevelID { get; private set;}
public int LevelNumber {
get{
return int.Parse(LevelID.Substring(5).ToString());
}
}
public Level(){
this.LevelID = GetType().ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
我假设使用上面的代码将是:
class Level32 : Level{
// call base class constructor...
}
Run Code Online (Sandbox Code Playgroud)
然后
Level32 level = new Level32();
int id = level.LevelNumber; // would print 32.
Run Code Online (Sandbox Code Playgroud)
我认为这个人意味着这一行: this.LevelID = GetType().ToString();
我说没有任何反思.
据我所知Java,调用SomeClass.class.getName()不使用任何"反射"包,因此它根本不使用反射.我认为这C#也是这样构建的.
我笨,还是他?
我认为,严格来说,GetType()电话是反思,是的.
然而,这只是最微不足道的反映,所以我不认为你是"一个"Hello World"小孩"的折扣.:-)
我笨,还是他?
我不喜欢这种框架:在我看来,你们两个都没有(或者你们两个都是因为琐碎的语义争论).