Проверьте класс объекта во время выполнения - PullRequest
0 голосов
/ 05 января 2019

У меня есть несколько классов наследования, скажем A и B: A. Я нашел способ проверить время выполнения , с каким классом я имею дело:

A a = new A;
if( some condition )
  a = new B;

if (a.classinfo.name == "a.b")
  writeln("That previous condition was met");

Но есть ли лучший способ? Я действительно запутался с typeid typeof и is.

1 Ответ

0 голосов
/ 05 января 2019

Если вам необходимо знать, является ли это тип или какой-либо его подтип, что, вероятно, является лучшим планом в следующих ситуациях:

(cast(B)a) !is null

Если вам нужно знать точный тип, который встречается редко, вы можете использовать:

a.classinfo is B.classinfo
...