is — позволяет определить, имеет ли объект совместимость с заданным типом.
as — выполняет операцию приведения типов объекта к заданному типу, не генерирую исключения, в случае, если объект и заданный тип являются не совместимыми.
as — выполняет операцию приведения типов объекта к заданному типу, не генерирую исключения, в случае, если объект и заданный тип являются не совместимыми.
базовый класс | производный класс |
One { } | Two : One { } |
One O = new One(); | Two T = new Two(); |
One O = new Two(); |
оператор is
Main.cs
using
System;
class
One {
-
public
int
A {
set
;
get
;}
}
class
Two : One {
-
public
int
B {
set
;
get
;}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
Two T =
new
Two();
-
One OO =
new
Two();
//можно
-
if
(O
is
Two) {
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- МОЖНО"
);
-
T = (Two)O;
-
}
-
else
{
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- НЕЛЬЗЯ"
);
//нельзя
-
}
-
if
(T
is
One) {
-
Console.WriteLine(
"O=(One)T --- тип T привести к типу One --- МОЖНО"
);
//можно
-
O = (One)T;
-
}
-
else
{
-
Console.WriteLine(
"O=(One)T --- тип T привести к типу One --- НЕЛЬЗЯ"
);
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
public
int
A {
set
;
get
;}
}
class
Two : One {
-
public
int
B {
set
;
get
;}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
Two T =
new
Two();
-
One OO =
new
Two();
//можно
-
if
(O
is
Two) {
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- МОЖНО"
);
-
T = (Two)O;
-
}
-
else
{
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- НЕЛЬЗЯ"
);
//нельзя
-
}
-
if
(T
is
One) {
-
Console.WriteLine(
"O=(One)T --- тип T привести к типу One --- МОЖНО"
);
//можно
-
O = (One)T;
-
}
-
else
{
-
Console.WriteLine(
"O=(One)T --- тип T привести к типу One --- НЕЛЬЗЯ"
);
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
T=(Two)O --- тип O привести к типу Two --- НЕЛЬЗЯ
O=(One)T --- тип T привести к типу One --- МОЖНО
O=(One)T --- тип T привести к типу One --- МОЖНО
оператор as
Main.cs
using
System;
class
One {
-
public
int
A {
set
;
get
;}
}
class
Two : One {
-
public
int
B {
set
;
get
;}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
Two T =
new
Two();
-
T = O
as
Two;
-
if
(T ==
null
) {
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- НЕЛЬЗЯ"
);
//нельзя
-
}
-
else
{
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- МОЖНО"
);
-
}
-
One OO =
new
One();
-
Two TT =
new
Two();
-
OO = TT
as
One;
-
if
(OO ==
null
) {
-
Console.WriteLine(
"OO=(One)TT --- тип TT привести к типу One --- НЕЛЬЗЯ"
);
-
}
-
else
{
-
Console.WriteLine(
"OO=(One)TT --- тип TT привести к типу One --- МОЖНО"
);
//можно
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
public
int
A {
set
;
get
;}
}
class
Two : One {
-
public
int
B {
set
;
get
;}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One();
-
Two T =
new
Two();
-
T = O
as
Two;
-
if
(T ==
null
) {
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- НЕЛЬЗЯ"
);
//нельзя
-
}
-
else
{
-
Console.WriteLine(
"T=(Two)O --- тип O привести к типу Two --- МОЖНО"
);
-
}
-
One OO =
new
One();
-
Two TT =
new
Two();
-
OO = TT
as
One;
-
if
(OO ==
null
) {
-
Console.WriteLine(
"OO=(One)TT --- тип TT привести к типу One --- НЕЛЬЗЯ"
);
-
}
-
else
{
-
Console.WriteLine(
"OO=(One)TT --- тип TT привести к типу One --- МОЖНО"
);
//можно
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
T=(Two)O --- тип O привести к типу Two --- НЕЛЬЗЯ
OO=(One)TT --- тип TT привести к типу One --- МОЖНО
OO=(One)TT --- тип TT привести к типу One --- МОЖНО