is,as,sizeof,typeof,GetType
这几个符号说来也多多少少的用过,今天就根据ProC#的讲述来总结一下:
1、 IS:
检查变量类型是否与指定类型相符,返回True ,False.不报错.
老实说,我没怎么用过。看看下面的实例代码,很容易理解:
int i = ;
if (i is object) //ture or false
{
Response.Write("i is object</br>");
}
但是,更经常的用法,在于判断一个未知类型(Object)是否与指定类型相符.
{
Class1 a;
Class2 b;
if (o is Class1)
{
Console.WriteLine("o is Class1");
a = (Class1)o;
// Do something with "a."
}
}而在这个时候,我经常用as来代替使用.
2、AS:
进行类型转换,如果不成功,返回null, 不报错.
string s2 = o as string;
if (s2 != null)
{
Response.Write("ok</br>");
}而在实际的开发中,as 用的较多,通常在获得一个对象的时候,并不知道其类型,用此转换成功后才能使用,这一点倒和IS有几分相似的地方.
应用一:
//set values to ds here
Session["Data"] = ds;
DataSet ds2 = Session["Data"] as DataSet;
if (ds2 != null)
{
//code here
}应用二:
CheckBox cb = (CheckBox)Repeater1.Items[i].FindControl("Clyb_xs");
HiddenField hf = (HiddenField)Repeater1.Items[i].FindControl("Hlyb_id");
button btn= form1.FindControl("btn") as Buttonl;
//Note: normally,here is GridView or others Data show Contorls
if (btn != null)
{
//code here
}
这个时候,用Is也可以达到目的
//set values to ds here
Session["Data"] = ds;
if (Session["Data"] is DataSet)
{
Response.Write("ok");
}
3、可空类型:
比如int 是不能为null的,但是如果这样标识就可以:
Console.WriteLine(j);??: 结合可空类型使用的符号, Format: a ?? b; 如果a 为null,则返回b的值,不然返回a的值.
单要注意,a,b必须有一个为可空类型:
int m = 23;
int? n = 12;
// Console.WriteLine(i ?? m); //error
Console.WriteLine(j ?? m); //output 23
Console.WriteLine(n ?? m); //output 12Sizeof: 用于返回值类型在内存中占的大小,注意,只能是值类型,不能为引用类型:
Console.WriteLine(sizeof(int)); //output 4
Console.WriteLine(sizeof(long)); //output 8typeof : 获得类型的System.Type 表示。
GetType():如果要获得对象在运行时的类型,可以用此方法。
应用:
{
if (ctl.GetType() == typeof(TextBox))
{
TextBox c = ctl as TextBox;
c.Text = "";
}
}typeof 在反射的时候,也有很大用途,随后学习到反射的时候再Demo.
4、sender 参数的应用(通过sender获取引发该事件的控件)
//每个事件的sender参数就是引发控件的事件源
protected void LinkButton1_Click(object sender, EventArgs e)
{
LinkButton lbtn = sender as LinkButton;
//可以对lbtn处理
}
is,as,sizeof,typeof,GetType的更多相关文章
- C# typeof Gettype is as &拆箱 装箱
有时候,我们不想用值类型的值,就是想用一个引用..Net提供了一个名为装箱(boxing)的机制,它允许根据值类型来创建一个对象,然后使用对这个新对象的一个引用. 首先,回顾两个重要的事实,1.对于引 ...
- typeof,GetType
typeof: 是运算符,获得某一类型的 System.Type 对象. Int32 t = new Int32(); Type t = typeof(int); GetType: 是方法,获取当前实 ...
- [C#]typeof,Gettype()和is的区别
typeof 参数是一个类型名称,比如你自己编写的一个类 GetType()是类的方法,继承自object,返回该实例的类型 is 用来检测实例的兼容性(是否可以相互转换) 例: class Anim ...
- 笔记16 C# typeof() & GetType()
C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型.typeof(x)中的x,必须是具体的类名.类型名称等,不可以是变量名称:GetType( ...
- sizeof()与Marshal.SizeOf()的不同
在.NET中一般都是通过sizeof()或Marshal.SizeOf()来获取数据类型的大小,来简要地看一下它们二者有何不同. sizeof() sizeof()在MSDN中的介绍是,在编译时获得一 ...
- Marshal.SizeOf和sizeof的区别
sizeof在非Unsafe环境下只能用于预定义的一系列类型,如Int,Short等等.而在Unsafe环境下,sizeof可以被用于值类型,但是值类型中不可以有引用类型,否则C#编译器会报错: er ...
- 编程基础-c语言中指针、sizeof用法总结
1.指针 学习 C 语言的指针既简单又有趣.通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的. ...
- CSharpGL(36)通用的非托管数组排序方法
CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...
- C#调用C++DLL传递结构体数组的终极解决方案
在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了.但是当传递的是结构体.结构体数组或者结构体指针的时候,就会发现C#上没有类型 ...
随机推荐
- 1 2 5 10 20 --> 800
用1元 2元 5元 10元 20元的钞票凑成800元的方法种数计算,使用了动态规划. 结果没打出来,只是保留在函数里各个vector中,调试可看所有结果. 优点:快 缺点:占空间占内存 耗时时间测试: ...
- qemu/kvm/qemu-kvm/virsh的区别
转自:http://www.2cto.com/os/201305/209596.html qemu/kvm/qemu-kvm/virsh的区别 qemu是一套虚拟机管理系统,kqemu是qemu的 ...
- 使用tcpdump抓Android网络包
1 抓包原理 tcpdump(需Root用户运行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其他数据包.简单说就监控手机进出网络数据. 2 方法优劣 2.1优点 1.手机数据包无遗漏 2. ...
- wordpress在window下完美实现301重定向的方法
问题: 首先,简单说一下关于301重定向的问题,最简单的理解就是,假设你的主机上绑定有 www.uilike.cn, uilike.cn, www.uiseo.cn三个域名,当你想输入 uilike. ...
- BaseAdapter使listview设置不同背景图片并添加selector
前段时间为了实现根据item不同的内容实现不同的背景色google了好久只找到了个隔行换色,通过自定义SimpleAdapter终于实现了此功能,但是定义了selector并没有触发点击效果.今天重新 ...
- Java项目打包工具安装失败解决方法
在学习Java的时候我们打包项目但遇到例如以下情况:(提示没有找到java的执行环境! ) 网上眼下有两中的解决方式: (1)选择本地jdk环境; (2)下载Download 可是第一种选择本地老是失 ...
- HTML技术简介
1.DHTML:"Dynamic HTML"动态HTML技术的简称.DHTML并不是一项新技术,而是HTML,CSS,JavaScript技术组合的术语.DHTML背后的含义是: ...
- DevOps探索
devops最近随着docker的升温而被越来越多的人所吸引!最近因项目所需投身到devops的项目当中,经过初步的实践搞出一套 paas平台的devops,这个平台现在还需要检验! 作为一个dev, ...
- UVa1339 Ancient Cipher
#include <iostream>#include <string>#include <cstring> // for memset#include <a ...
- 类中成员函数与数据成员private/pubic/protected
类中成员函数与数据成员private/pubic/protected