Как сказать, имеет ли экземпляр определенный тип или какие-либо производные типы

Вы можете использовать это awk решение, чтобы получить список всех n буквенных подстрок и их частот:

awk -v n=4 '{
for (i=1; i<=NF; i++)
   for (j=1; j<=length($i)-n+1; j++)
      w[substr($i, j, n)]++
}
END {
   for (i in w) print i, w[i]
}' file

appl 2
ensi 1
nana 1
mang 1
sive 1
anan 1
nsiv 1
grea 1
pens 1
xpen 1
bana 1
ples 2
pple 2
expe 1
reat 1
ango 1
14
задан Eric Anastas 16 April 2009 в 05:34
поделиться

3 ответа

How about this:


    MyObject myObject = new MyObject();
    Type type = myObject.GetType();

    if(typeof(YourBaseObject).IsAssignableFrom(type))
    {  
       //Do your casting.
       YourBaseObject baseobject = (YourBaseObject)myObject;
    }  


This tells you if that object can be casted to that certain type.

24
ответ дан 1 December 2019 в 07:13
поделиться

I think you need to restate your conditions, because if obj is an instance of Derived, it will also be an instance of Base. And typ.IsIstanceOfType(obj) will return true.

class Base { }
class Derived : Base { }

object obj = new Derived();
Type typ = typeof(Base);

type.IsInstanceOfType(obj); // = true
type.IsAssignableFrom(obj.GetType()); // = true
7
ответ дан 1 December 2019 в 07:13
поделиться

Если вы работаете с экземплярами, вы должны использовать Type.IsInstanceOfType

(Возвращает) истина, если текущий тип в иерархии наследования объект, представленный o, или если Текущий тип - это интерфейс, который опоры. ложь, если ни один из них условия это случай, или если о nullNothingnullptra нулевая ссылка (Ничего в Visual Basic), или если текущий тип является открытым универсальным типом (то есть ContainsGenericParameters возвращает истину). - MSDN

        Base b = new Base();
        Derived d = new Derived();
        if (typeof(Base).IsInstanceOfType(b)) 
            Console.WriteLine("b can come in.");    // will be printed
        if (typeof(Base).IsInstanceOfType(d)) 
            Console.WriteLine("d can come in.");    // will be printed

Если вы работаете с объектами Type, вам следует взглянуть на Type.IsAssignableFrom

(Возвращает) true, если c и текущий тип. представляют один и тот же тип, или если Текущий тип находится в наследстве иерархия с, или если текущий тип интерфейс, который реализует с, или если c является параметром универсального типа и текущий тип представляет собой один из ограничения с. ложь, если ни один из эти условия выполняются, или если с nullNothingnullptra нулевая ссылка (Ничего в Visual Basic). - MSDN

7
ответ дан 1 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: