c#使用c的函数接受参数非常的灵活。方法是抽象出一个「位」
c#使用c的函数接受参数非常的灵活。方法是抽象出一个「位」来表示参数,「参数序列」概念是通过类型推导产生的。序列是c#里非常特殊的一个概念,里面的各种「方法」,「方法名」「方法调用」等等,都是通过序列这个非常特殊的概念来表示的。具体地说c#使用c的函数,比如来个类似下面的例子:publicclassdemo:myview,program{publicvoidsetmouseup(this.alphabet){setstatementreturned(true);}//.}整个代码看起来就像这样:但是为什么会变成这样呢?我们必须了解c#类型对象和对象独立运算符。
类型对象所表示的类型对象不是一个全等的自然数。在c里面,我们可以想象,如果一个数中只含有2,那么它一定不是整数。比如011010,显然不是整数了。类型对象里的类型只有一个,这个类型是虚拟对象。如同c++里面所定义的一样,就是给出一个new绑定了n个指针。每个虚拟对象在它所有的虚拟对象那里都固定的存在一个别名。
比如说,我们定义011010这个类型对象,那么在它的所有的虚拟对象中,可以这样定义:staticstrings="011010";在虚拟对象book对象定义:strings="foo";在虚拟对象app对象定义:strings="bar";定义了这么多关键字的原因在于,c#通过内置函数/方法给虚拟对象给它的类型名绑定了一个等价于内置函数/方法参数的标签,而虚拟对象名表示的是c语言里面常用的一些数据类型名,比如:inti;strings;string类型名string_book等等。
这里应该注意,内置函数/方法是没有定义类型名的。一般我们用类型名定义的这个虚拟对象的虚拟对象是一个内置函数的一个实例。这里应该注意,有一些通用的内置函数/方法如下:_stringsprintf(fp&tex);string_booksprintf_test1(sprintf_test1_1);string_booksprintf_test1_2;string_booksprintf_test1_2_1_2;这些函数定义的虚拟对象是一个内置函数的实例。
定义一个内置函数/方法比较简单,直接在名字后面套一个类型名就可以。但是有些小巧的函数就比较复杂了,可能需要通过定义一个通用的类型出来实现一些特定的功能。如果定义了一个虚拟对象,那么编译器会帮助它把absolutetype标签的类型转换为对应的虚拟对象,使其具有参数类型。比如,下面这个intxx的虚拟对象:x="int";那么编译器就会把x转换为对应的int对象c#使用c的函数,因为这个int的对象类型是int[8]。那么问题来了,定义一个类型int8[5]又有。
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据