在什么情况下使用is,在什么情况下使用as.is与as的区别。
解决方案 »
- ListBox拖放文件,改变鼠标光标
- Window Mobile 用户自定义控件问题
- 【求教】socket连接问题(当对方拒绝访问时)..我的办法可行么?
- 判断一个string是否为5位数字的正则表达式怎么写
- ListBox显示item名字
- 使用用友华表控件,输入汉字词组会乱码,只有万能五笔中的特殊上屏方式才能解决?
- 从配置文件中读取的路径只显示文件名,且可以在下拉列表中点击文件名后调用文件,如何实现?
- 在gdi+中如何绘制手动输入的字符串?
- C#菜鸟求救。。。
- Visual Studio .NET 和 asp.net有区别吗
- dataview 更新问题
- ado时代,程序中可以很容易的调用“建立连接”的对话框,ado.net时代如何实现啊
as 转换时候用的,翻译成“把它当作”
string a;
那么(a is string)==true
类似于a.getType()==typeof(string)as用于转换类型:
float f;
double d = f as double;
类似于
double d = (double)f;
//is用于判断类型是否相符:
int a,
//可以用在判断语句中.
if(a is int)
{
;
}//as用于转换类型:
object a=5;
int b;
b = ( a as int);
as/is只对引用类型有效拿个值类型用is/as昏死!!!下面是MSDN上的:is 运算符用于检查对象的运行时类型是否与给定类型兼容,请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。is 运算符不考虑其他转换(如用户定义的转换)。示例
// cs_keyword_is.cs
// The is operator
using System;
class Class1
{
}class Class2
{
}public class IsTest
{
public static void Test (object o)
{
Class1 a;
Class2 b; if (o is Class1)
{
Console.WriteLine ("o is Class1");
a = (Class1)o;
// do something with a
}
else if (o is Class2)
{
Console.WriteLine ("o is Class2");
b = (Class2)o;
// do something with b
}
else
{
Console.WriteLine ("o is neither Class1 nor Class2.");
}
}
public static void Main()
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
Test (c1);
Test (c2);
Test ("a string");
}
}
输出
o is Class1
o is Class2
o is neither Class1 nor Class2.
as 运算符用于执行可兼容类型之间的转换。as 运算符用在以下形式的表达式中:as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将产生空,而不是引发异常。请注意,as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用 cast 表达式来代替其执行。
示例
// cs_keyword_as.cs
// The as operator
using System;
class MyClass1
{
}class MyClass2
{
}public class IsTest
{
public static void Main()
{
object [] myObjects = new object[6];
myObjects[0] = new MyClass1();
myObjects[1] = new MyClass2();
myObjects[2] = "hello";
myObjects[3] = 123;
myObjects[4] = 123.4;
myObjects[5] = null; for (int i=0; i<myObjects.Length; ++i)
{
string s = myObjects[i] as string;
Console.Write ("{0}:", i);
if (s != null)
Console.WriteLine ( "'" + s + "'" );
else
Console.WriteLine ( "not a string" );
}
}
}
输出
0:not a string
1:not a string
2:'hello'
3:not a string
4:not a string
5:not a string
//不好意思,我前面的回贴,没仔细想,这样才对.
class Program
{
static void Main(string[] args)
{
object a = null;
if (a is apple)
{
;
} apple b = new apple();
a = (b as object);
}
} class apple
{
//构造函数
public apple()
{
}
}
而as不会, 转换不了, 你得到的只是null而已.
object b = (a as object);
int c = b as int;//error