is,as,sizeof,typeof,GetType

这几个符号说来也多多少少的用过,今天就根据ProC#的讲述来总结一下:
   IS:
   检查变量类型是否与指定类型相符,返回True ,False.不报错.
   老实说,我没怎么用过。看看下面的实例代码,很容易理解:

 int i = 100;

        if (i is object)   //ture or false
        {
            Response.Write("i is object</br>");
        }

但是,更经常的用法,在于判断一个未知类型(Object)是否与指定类型相符.

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."
        }
}

而在这个时候,我经常用as来代替使用.
 AS:
  进行类型转换,如果不成功,返回null, 不报错.

  object o = "hi";
        string s2 = o as string;
        if (s2 != null)
        {
            Response.Write("ok</br>");
        }

而在实际的开发中,as 用的较多,通常在获得一个对象的时候,并不知道其类型,用此转换成功后才能使用,这一点倒和IS有几分相似的地方.
   应用一:

        DataSet ds = new DataSet();
        //set values to ds here
        Session["Data"] = ds;
        DataSet ds2 = Session["Data"] as DataSet;
        if (ds2 != null)
        {
            //code here
        }

应用二:

        Button btn = form1.FindControl("btn") as Buttonl;
        //Note: normally,here is GridView or others Data show Contorls
        if (btn != null)
        {
            //code here
        }

这个时候,用Is也可以达到目的

 DataSet ds = new DataSet();
        //set values to ds here
        Session["Data"] = ds;
        if (Session["Data"] is DataSet)
        {
            Response.Write("ok");
        }

可空类型:
   比如int 是不能为null的,但是如果这样标识就可以:

  int? j = null;
 Console.WriteLine(j);

??: 结合可空类型使用的符号, Format: a ?? b; 如果a 为null,则返回b的值,不然返回a的值.
       单要注意,a,b必须有一个为可空类型:

  int i = 22;
            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(byte)); //output 1
            Console.WriteLine(sizeof(int));  //output 4
            Console.WriteLine(sizeof(long)); //output 8

typeof : 获得类型的System.Type 表示。
  GetType():如果要获得对象在运行时的类型,可以用此方法。
  应用:

            foreach (Control ctl in ctls.Controls)
            {
                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相关推荐

  1. C# typeof Gettype is as 拆箱 装箱

    有时候,我们不想用值类型的值,就是想用一个引用..Net提供了一个名为装箱(boxing)的机制,它允许根据值类型来创建一个对象,然后使用对这个新对象的一个引用. 首先,回顾两个重要的事实,1.对于引 ...

  2. c语言 sizeof typeof,typeof、nameof、sizeof的用法

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? typeof.nameof.sizeof的用法 这些都是较直觉的用法,故只列范示,说明的部分会比较少 一.nameofu ...

  3. 一种C#读写二进制文件的通用方法

    在日常的工作中,我们经常需要进行一些二进制文件或协议的读写操作,用C#解析二进制文件常常是一件比较麻烦且容易出错的工作,本文介绍了一种在C#中实现快速读写二进制文件通用的方法. 以一个解析Mp3 ID ...

  4. CSharpGL(36)通用的非托管数组排序方法

    CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...

  5. C#调用C++DLL传递结构体数组的终极解决方案

    在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了.但是当传递的是结构体.结构体数组或者结构体指针的时候,就会发现C#上没有类型 ...

  6. C#穿透session隔离———Windows服务启动UI交互程序

    在Windows服务里面启动其他具有界面的应用程序,需要穿透session隔离,尝试了很多种方法,都可行,现在一一列举下来,并写下几个需要注意的地方. 需要注意的地方 首先要将服务的Account属性 ...

  7. Windows平台RTMP直播推送集成简要说明

    好多开发者在集成大牛直播SDK (官方)的Windows平台RTMP推送模块时吓一跳,怎么这么多接口?本文做个简单的拆分: 初始化 初始化之前,如需设置日志路径,调用NTSmartLog.NT_SL_ ...

  8. 编程语言对比 基本数据类型

    所有编程语言的基本类型可以分为(数值型,布尔类型,字符型) 数值类型 类型 python javascript java c go byte 1 byte short 2 bytes 2 bytes ...

  9. 创建单实例WPF应用程序的正确方法是什么?

    在.NET(而不是Windows Forms或控制台)下使用C#和WPF,创建只能作为单个实例运行的应用程序的正确方法是什么? 我知道它与某种称为互斥量的神话事物有关,我很少能找到一个烦人的人来阻止并 ...

最新文章

  1. python入门:工欲善其事,必先利其器
  2. 通配符?子字符串匹配主字符串次数_突破LeetCode,拿BAT大厂offer之《正则表达式匹配》(动态规划)...
  3. html表单没有csrf保护,如何在Symfony 1.4中为表单禁用CSRF保护/验证
  4. Java静态内部类、匿名内部类、成员式内部类和局部内部类
  5. python中的线程
  6. Renascence架构原理——最优化算法
  7. 【渝粤题库】陕西师范大学152108 电子政务理论与实践 作业(高起专)
  8. MyEclipse6.5安装SVN插件的三种方法
  9. 拳王虚拟项目公社:低价电影票怎样赚钱,低价电影票实操赚钱方法
  10. 正则表达式去除连续重复的字符
  11. MacOS怎样启用悬停文本功能的具体操作方法!
  12. 人脸识别门禁系统java实现_java实现人脸识别源码【含测试效果图】——前台页面层(login.jsp)...
  13. bat批处理命令大全(翻译转载)
  14. TURN协议简要介绍
  15. 网络社区划分的算法分类(2)
  16. python绘制社会关系网络图_python画社交网络图
  17. C++身份证校验码计算器
  18. Newzoo伽马数据发布《元宇宙全球发展报告》 元境多项领先技术受关注
  19. Pikachu靶场之(XSS盲打)
  20. python numpy读取数据_python机器学习(七)数据分析利器,NumPy,pandas与Matplotlib

热门文章

  1. Spark dataframe【KV格式】模拟实现Map操作
  2. 巴菲特:我们会在中国找到机会
  3. java中写sql语句的小小细节
  4. 谷歌浏览器chrome设置特定网页使用Https(ssl)访问
  5. Android应用程序线程消息循环模型分析(5)
  6. ImageX instead of Ghost
  7. B 附录 Idea debug时的问题 Skipped breakpoint at ...
  8. 从理解Future模式到仿写JUC的Future模式
  9. pandas 做柱状图 显示中文_官方调研重磅发布,Pandas或将重构?
  10. python播放音乐-python 模拟(简易)音乐播放器