is,as,sizeof,typeof,GetType
is,as,sizeof,typeof,GetType
IS:
检查变量类型是否与指定类型相符,返回True ,False.不报错.
老实说,我没怎么用过。看看下面的实例代码,很容易理解:
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来代替使用.
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
}
应用二:
//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");
}
可空类型:
比如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 12
Sizeof: 用于返回值类型在内存中占的大小,注意,只能是值类型,不能为引用类型:
Console.WriteLine(sizeof(int)); //output 4
Console.WriteLine(sizeof(long)); //output 8
typeof : 获得类型的System.Type 表示。
GetType():如果要获得对象在运行时的类型,可以用此方法。
应用:
{
if (ctl.GetType() == typeof(TextBox))
{
TextBox c = ctl as TextBox;
c.Text = "";
}
}
typeof 在反射的时候,也有很大用途,随后学习到反射的时候再Demo.
转载于:https://www.cnblogs.com/muou/archive/2010/05/18/1738078.html
is,as,sizeof,typeof,GetType相关推荐
- C# typeof Gettype is as 拆箱 装箱
有时候,我们不想用值类型的值,就是想用一个引用..Net提供了一个名为装箱(boxing)的机制,它允许根据值类型来创建一个对象,然后使用对这个新对象的一个引用. 首先,回顾两个重要的事实,1.对于引 ...
- c语言 sizeof typeof,typeof、nameof、sizeof的用法
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? typeof.nameof.sizeof的用法 这些都是较直觉的用法,故只列范示,说明的部分会比较少 一.nameofu ...
- 一种C#读写二进制文件的通用方法
在日常的工作中,我们经常需要进行一些二进制文件或协议的读写操作,用C#解析二进制文件常常是一件比较麻烦且容易出错的工作,本文介绍了一种在C#中实现快速读写二进制文件通用的方法. 以一个解析Mp3 ID ...
- CSharpGL(36)通用的非托管数组排序方法
CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...
- C#调用C++DLL传递结构体数组的终极解决方案
在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了.但是当传递的是结构体.结构体数组或者结构体指针的时候,就会发现C#上没有类型 ...
- C#穿透session隔离———Windows服务启动UI交互程序
在Windows服务里面启动其他具有界面的应用程序,需要穿透session隔离,尝试了很多种方法,都可行,现在一一列举下来,并写下几个需要注意的地方. 需要注意的地方 首先要将服务的Account属性 ...
- Windows平台RTMP直播推送集成简要说明
好多开发者在集成大牛直播SDK (官方)的Windows平台RTMP推送模块时吓一跳,怎么这么多接口?本文做个简单的拆分: 初始化 初始化之前,如需设置日志路径,调用NTSmartLog.NT_SL_ ...
- 编程语言对比 基本数据类型
所有编程语言的基本类型可以分为(数值型,布尔类型,字符型) 数值类型 类型 python javascript java c go byte 1 byte short 2 bytes 2 bytes ...
- 创建单实例WPF应用程序的正确方法是什么?
在.NET(而不是Windows Forms或控制台)下使用C#和WPF,创建只能作为单个实例运行的应用程序的正确方法是什么? 我知道它与某种称为互斥量的神话事物有关,我很少能找到一个烦人的人来阻止并 ...
最新文章
- python入门:工欲善其事,必先利其器
- 通配符?子字符串匹配主字符串次数_突破LeetCode,拿BAT大厂offer之《正则表达式匹配》(动态规划)...
- html表单没有csrf保护,如何在Symfony 1.4中为表单禁用CSRF保护/验证
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- python中的线程
- Renascence架构原理——最优化算法
- 【渝粤题库】陕西师范大学152108 电子政务理论与实践 作业(高起专)
- MyEclipse6.5安装SVN插件的三种方法
- 拳王虚拟项目公社:低价电影票怎样赚钱,低价电影票实操赚钱方法
- 正则表达式去除连续重复的字符
- MacOS怎样启用悬停文本功能的具体操作方法!
- 人脸识别门禁系统java实现_java实现人脸识别源码【含测试效果图】——前台页面层(login.jsp)...
- bat批处理命令大全(翻译转载)
- TURN协议简要介绍
- 网络社区划分的算法分类(2)
- python绘制社会关系网络图_python画社交网络图
- C++身份证校验码计算器
- Newzoo伽马数据发布《元宇宙全球发展报告》 元境多项领先技术受关注
- Pikachu靶场之(XSS盲打)
- python numpy读取数据_python机器学习(七)数据分析利器,NumPy,pandas与Matplotlib
热门文章
- Spark dataframe【KV格式】模拟实现Map操作
- 巴菲特:我们会在中国找到机会
- java中写sql语句的小小细节
- 谷歌浏览器chrome设置特定网页使用Https(ssl)访问
- Android应用程序线程消息循环模型分析(5)
- ImageX instead of Ghost
- B 附录 Idea debug时的问题 Skipped breakpoint at ...
- 从理解Future模式到仿写JUC的Future模式
- pandas 做柱状图 显示中文_官方调研重磅发布,Pandas或将重构?
- python播放音乐-python 模拟(简易)音乐播放器