Object参数示例

来源:互联网 发布:java实现doc文件导出 编辑:程序博客网 时间:2024/05/18 12:29

你想了解C#程序语言中的类型系统,同样类型系统也关系使用object类型作为参数。当一个方法接收一个object参数,你可以传递给它任何派生类的实例;因为每个类型都是从object类型继承而来,你可以传递任何值到接收object参数的方法。在这篇文章中,我们使用object类型作为方法的参数来检验object类型。

使用object类型

这里,我们使用一个程序文本来介绍接收object类型参数的方法来演示如何在方法中使用object作为参数。在此提醒,object关键字其实是基础类库System.Object类型的别名。下面程序传递直接一个string类型到Test方法的object参数中,并直接分配一个string对象到object。也可以使用int变量作为object,甚至可以使用null常量作为object

=== 使用object类型参数程序(C#) ===

using System;

 

class Program{

    static voidMain(){

        // 使用string类型作为object

        string value = "Dot Net Perls";

        Test(value);

        Test((object)value);

        // 使用integer类型作为object

        int number= 100;

        Test(number);

        Test((object)number);

        // 使用null作为object

        Test(null);

        Test((object)null);

    }

 

    static voidTest(object value){

        // 测试对象。

        // 如果是stringinteger在屏幕上显示他们的值。

        Console.WriteLine(value!= null);

        if (valueis string){

            Console.WriteLine("Stringvalue: {0}", value);

        } else if(value is int){

            Console.WriteLine("Intvalue: {0}", value);

        }

    }

}

=== 程序输出 ===

True

String value: Dot Net Perls

True

String value: Dot Net Perls

True

Int value: 100

True

Int value: 100

False

False

程序文本的概述。这里我们讨论程序的输出。字符串变量分配了指向字符串常量的引用,并将它作为参数传递给Test方法。Test方法也接受null作为它的参数,并使用“is”来测试传递给object参数的继承类型。开始两句调用Test方法用来判断表达式(值是否是string类型)是否为真。接下去两句用于匹配(值是否是int类型)。同时使用Console.WriteLine方法将继承object类型的字符串表现形式打印在屏幕上。

更多继承类型作为参数

C#语言中,每个类型逻辑上都是从object类型继承而来。实际上,如果你创建一个类并没有指定从哪里继承,隐含着继承object类型继承。在面向对象的程序中,类层次结构允许我们通过基类类型引用继承类类型。精确地说,这能够作为传递闭包的概念来描述。

object参数的形式

在结构化程序语言中,方法签名包括参数列表的格式,参数列表也可能为空。在参数列表中也有可能包含object类型的参数,但这可能会引发类型信息丢失。如果你在参数列表中包含了object类型,你需要尝试去确定object类型的继承类。你可能会用上“is”或“as”。

对象装箱

C#语言中,object类型在很多方式是常用的类型,虽然他在执行是有些复杂。例如,由于优化的关系,值类型并没有真正的引发派生堆,并没有在派生堆中,对象不可能真正存在。由于,object类型在这个例子中可以认为逻辑继承代替物理继承。由于值类型指针的这个缺陷,值类型要作为它的object基类类型必须分配一个新的对象。这个称为装箱,相反的过程被称为拆箱。

结束语

在这篇文章中,我们研究了C#编程语言中使用object类型作为参数。这个程序示例阐明了如何使用object类型作为参数,以及在参数列表中如何接受任意类型作为object类型。另外,我们注意到作为理解类型的继承,并且具体完成问题关系到值类型执行的关键,例如装箱。

原创粉丝点击