C#泛型,下面的程序是msdn关于泛型的一节。有些地方我不懂(我在下面的程序会标出来),请帮我解释下。

C#泛型,下面的程序是msdn关于泛型的一节。有些地方我不懂(我在下面的程序会标出来),请帮我解释下。,第1张

hea的是node的成员变量,默认为null,因此构造函数里赋值为null毫无意义,nNext = head; 这句等号右边为null,等于什么都没做,我认为没意义

head = n;先是凭空创造了个n节点,然后把它作为当前node的head,这没什么问题。

总体感觉这代码写得一般,不值得深入学习。

public class Gtype {

public static<T> void out(int[] t){

for(int i=0;i<tlength;i++){

Systemoutprintln(t[i]+" ");

}

}

public static void main(String[] args) {

int[] sh=new int[]{1,2,3};

out(sh);

}

}

你的sh数组类型是int类型,那么你调用out方法,传的参数数组类型就是int类型的

因为程序写得越抽象, 重用的可能性越高 这就是泛型技术(Generic programming)的目的 (泛型这个翻译不是很好, Generic 泛的不光是型)比如说, 泛型技术还用于实现各种DESIGN PATTERN 范型技术本身的特点决定了它不是一个象面向对象那样比较基础的概念,它的应用范围比面向对象要窄的多。甚至可以说它们在某种程度上不具有可比性。

泛型方法:

public T getMax<T>(T a,T b,T c)

{

T d;

d=(a>b)a:b;

d=(d>c)d:c;

return d;

}

使用泛型方法:

int number1,number2,number3,max;

number1=1;

number2=2;

number3=3;

max=getMax<int>(number1,number2,number3);

double d1,d2,d3,Max;

d1=1;

d2=2;

d3=3;

Max=getMax<double>(n1,n2,n3);

泛型主要是面向通用程序设计(Generic Programming)的。。。即一段逻辑代码可以被实例化为一系列不同的具体实例

在C++中,泛型主要是通过模板来支持的,例如著名的标准模板库(STL)和Boost程序库。。。

而范型,则可以做为一种程序设计的模式来理解,例如面向对象范型,面向方面范型,结构化程序设计范型,函数式范型等。。。。

在C++中,包含了结构化程序设计,基于对象设计,面向对象程序设计,泛型程序设计,模板元编程等。。。也正因为此,我们说C++威力之强大,内容之博大精深

在Java SE15之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。 1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。3、泛型的类型参数可以有多个。4、泛型的参数类型可以使用extends语句,例如<Textends superclass>。习惯上成为“有界类型”。5、泛型的参数类型还可以是通配符类型。例如Class<> classType =ClassforName(javalangString);

以上就是关于C#泛型,下面的程序是msdn关于泛型的一节。有些地方我不懂(我在下面的程序会标出来),请帮我解释下。全部的内容,包括:C#泛型,下面的程序是msdn关于泛型的一节。有些地方我不懂(我在下面的程序会标出来),请帮我解释下。、Java程序,数组传不过去,泛型的方法、为什么用 C++ 进行泛型程序设计很少见到等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9272146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存