这被认为是反思吗?

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#也是这样构建的.

我笨,还是他?

Ric*_*ich 7

我认为,严格来说,GetType()电话是反思,是的.

请参阅/sf/answers/1706414741/

然而,这只是最微不足道的反映,所以我不认为你是"一个"Hello World"小孩"的折扣.:-)

我笨,还是他?

我不喜欢这种框架:在我看来,你们两个都没有(或者你们两个都是因为琐碎的语义争论).