The java “instanceof” operator is used to test whether the object is an instance of the specified type (class or subclass or interface). It is also known as type comparison operator because it compares the instance with type. It returns either true or false.
The instanceof operator in Java is used to check whether an object is an instance of a particular class or not. objectName instanceOf className; Here, if objectName is an instance of className , the operator returns true . Otherwise, it returns false .
Class instances are objects. Like any other object-oriented language, C# also has object and classes. Objest are real-world entities and instance of a class. Access the members of the class using an object.
The is operator is used to check if the run-time type of an object is compatible with the given type or not. It returns true if the given object is of the same type otherwise, return false. It also returns false for null objects. Here, the expression will be evaluated to an instance of some type.
The different answers here have two different meanings.
If you want to check whether an instance is of an exact type then
if (c.GetType() == typeof(TForm))
is the way to go.
If you want to know whether c
is an instance of TForm
or a subclass then use is
/as
:
if (c is TForm)
or
TForm form = c as TForm;
if (form != null)
It's worth being clear in your mind about which of these behaviour you actually want.
if(c is TFrom)
{
// Do Stuff
}
or if you plan on using c
as a TForm
, use the following example:
var tForm = c as TForm;
if(tForm != null)
{
// c is of type TForm
}
The second example only needs to check to see if c
is of type TForm
once. Whereis if you check if see if c
is of type TForm
then cast it, the CLR undergoes an extra check.
Here is a reference.
Edit: Stolen from Jon Skeet
If you want to make sure c
is of TForm
and not any class inheriting from TForm
, then use
if(c.GetType() == typeof(TForm))
{
// Do stuff cause c is of type TForm and nothing else
}
Yes, the "is" keyword:
if (c is TForm)
{
...
}
See details on MSDN: http://msdn.microsoft.com/en-us/library/scekt9xw(VS.80).aspx
Checks if an object is compatible with a given type. For example, it can be determined if an object is compatible with the string type like this:
Also, somewhat in the same vein
Type.IsAssignableFrom(Type c)
"True if c and the current Type represent the same type, or if the current Type is in the inheritance hierarchy of c, or if the current Type is an interface that c implements, or if c is a generic type parameter and the current Type represents one of the constraints of c."
From here: http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx
A little more compact than the other answers if you want to use c as a TForm:
if(c is TForm form){
form.DoStuff();
}
Try the following
if (c is TForm) {
...
}
As others have mentioned, the "is" keyword. However, if you're going to later cast it to that type, eg.
TForm t = (TForm)c;
Then you should use the "as" keyword.
e.g. TForm t = c as TForm.
Then you can check
if(t != null)
{
// put TForm specific stuff here
}
Don't combine as with is because it's a duplicate check.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With