首页 > 代码库 > is,as,类库

is,as,类库

 is和as运算符:
所有类型的基类
object类型 - 基类:所有类型的基类,就类似是整个生物圈的生物类,是个大的概念
object o1 = new Random();     //object可以承载Random随机数类型
            object o2 = new aaa();        //object可以承载新建的类aaa
            object o3 = "";               //object可以承载字符串类
            object o4 = 11;               //object可以承载数字类
            
            
            //没有引用的类型,可以右键解析出来
            ArrayList arr = new ArrayList();
            //这个集合里可以放任意类型
            arr.Add("呵呵");
            arr.Add(12.5);
            arr.Add(new Random());  //一个对象实例化的过程,实际上是new实行一遍构造函数的过程,
            //ArrayList arr = new ArrayList();实际就是一个对象放到一个变量里面去
            //现在是省略一步,没有放到变量里去,直接扔到集合里去
            arr.Add(new  aaa ());    //新建的类也可以加上

            //string s = arr[0];这个时候不能进行转换。
            //子类string可以转换成父类object
            //父类无法转换成子类
            //正确方式是:
            string s = arr[0].ToString();
            Console.WriteLine(s);

            //不知道数据类型时,可以用string转换
            string ss = arr[1].ToString();
            Console.WriteLine(ss);

            //这样也可以转换,只是打印出的是它的数据类型
            string sss = arr[2].ToString();
            Console.WriteLine(sss);

            //Random r = (Random)arr[0];  //意思是:把索引值是0的转换成随机数类型,然后赋值到随机数类型"r",也是转换类型的一种方法
            //r.Next(0,3);                  这时的系统崩溃,无法转换

            bool b = arr[0] is Random;    //返回的是布尔类型
            Console.WriteLine(b);
            
                        
 ----------------------------------------------------------------------------           
            

is是判断某个对象是否是某个类型
 对象 is 类型  返回 bool类型
 
 
 //在不知道哪个是随机数的情况下:
            foreach (object o in arr) {       //里面都是object类型
                if(o is Random == true){      //o is Random == true ,判断"o"是不是随机数类型,true可以不写,默认是true,把错误的都屏蔽掉
                    Random r = (Random)o;    //如果是的话,把“0”转换成随机数类型,赋值给r
                    Console.WriteLine(r.Next(0,3));     //  可以直接打印出来
                }
            }
 
 
 
 
 -----------------------------------------------------------------------------
 
as是将某个对象转换成某个类型
 对象 as 类型  
 如果转换成功返回对象类型
 如果转换失败,也不会报错,而是返回null值


//方法二:
            foreach (object o in arr)
            {
                Random r = o as Random;      //数据类型转换的过程
                //r.Next(0,10);              这时会报错,未将对象引用设置到对象的实例,"r"值是空的null,说明没有被实例化,没有被实例化的原因是,"o"对象变不成Random类型,类型转换不过来
                //尽量使用as形式的,因为转换不成不会报错,只会返回空值

                //这里可以进行判断
                if(r != null){
                    Console.WriteLine(r.Next(0,10));   //这样就可以直接调用了
                }
            }


-----------------------------------------------------------------------------------



类库:(带小齿轮的辅助程序,加密用的乱码)dll  

namespace 类库
{
    class Program
    {
        static void Main(string[] args)
        {
            //新写一个加减的类,然后在文件中找到加减这个类,放到桌面上,引用的时候,在类库这个文件这,右键粘贴即可,注意命名空间记得引用出来


            JiaJian c = new JiaJian();
            Console.WriteLine(c.jiafa(10, 2));              //这样就能打出来了

            //f12 可以查看定义,也就是加密版

            Console.ReadLine();
        }
    }
}



class JiaJian
    {
        public int jiafa(int a, int b)
        {
            return a + b;
        }
        public int jianfa(int a, int b)
        {
            return a - b;
        }
        //然后点击输出,找到bin文件找到.dll文件,复制粘贴,然后再点生成,再点类库下的引用,浏览添加,确定之后再点生成,然后引用命名空间,然后在program里 JiaJian c = new JiaJian();  JiaJian是class类名

    }
}

 

is,as,类库