//解决:在很多情况下,我们并不知道对象是否支持某一接口,这时,可以试图讲对象转化为接口类型
//在c#里面,我们可以采取两种方法获的对象知否支持某个接口
代码如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
conn cn = new conn();
if (cn is Iconnect)//是否实现了接口
{
Iconnect iconn = (Iconnect)cn;
iconn.read();
Console.ReadLine();
}
else
{
Console.WriteLine("can not connvert");
Console.ReadLine();
}
//IS操作符很清晰,但是操作效率不高,另种方式是AS
conn cnn = new conn();
Iconnect icnn1 = cnn as Iconnect;
if (icnn1 != null)
{
icnn1.write();
Console.ReadLine();
}
else
{
Console.WriteLine("can not connvert");
Console.ReadLine();
}
//as 操作符首先测试转换是否合法,如果合法就转换,否则返回NULL。关键词NULL表示空引用
}
}
public interface Iconnect
{
void read();
void write();
}
public class conn : Iconnect
{
public void read()
{
Console.WriteLine("实现了read()方法");
}
public void write()
{
Console.WriteLine("实现了write()方法");
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
conn cn = new conn();
if (cn is Iconnect)//是否实现了接口
{
Iconnect iconn = (Iconnect)cn;
iconn.read();
Console.ReadLine();
}
else
{
Console.WriteLine("can not connvert");
Console.ReadLine();
}
//IS操作符很清晰,但是操作效率不高,另种方式是AS
conn cnn = new conn();
Iconnect icnn1 = cnn as Iconnect;
if (icnn1 != null)
{
icnn1.write();
Console.ReadLine();
}
else
{
Console.WriteLine("can not connvert");
Console.ReadLine();
}
//as 操作符首先测试转换是否合法,如果合法就转换,否则返回NULL。关键词NULL表示空引用
}
}
public interface Iconnect
{
void read();
void write();
}
public class conn : Iconnect
{
public void read()
{
Console.WriteLine("实现了read()方法");
}
public void write()
{
Console.WriteLine("实现了write()方法");
}
}
}
结论:
1.IS操作符很清晰,但是操作效率不高,另种方式是AS
2.as 操作符首先测试转换是否合法,如果合法就转换,否则返回NULL。关键词NULL表示空引用