当前位置: 首页 > news >正文

南京一对一网站建设统计工具

南京一对一网站建设,统计工具,100m的光纤可以做网站吗,西安百度推广服务公司C# 泛型详解1、泛型概述2、定义泛型3、泛型的特性4、泛型委托5、泛型的优点在 C# 中,泛型(Generic)是一种规范,它允许我们使用占位符来定义类和方法,编译器会在编译时将这些占位符替换为指定的类型,利用泛型…

C# 泛型详解

      • 1、泛型概述
      • 2、定义泛型
      • 3、泛型的特性
      • 4、泛型委托
      • 5、泛型的优点

在 C# 中,泛型(Generic)是一种规范,它允许我们使用占位符来定义类和方法,编译器会在编译时将这些占位符替换为指定的类型,利用泛型的这一特性我们可以定义通用类(泛型类)或方法(泛型方法)。

1、泛型概述

使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。
泛型最常见的用途是创建集合类。
.NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList。
您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
可以对泛型类进行约束以访问特定数据类型的方法。
关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。

2、定义泛型

定义通用类需要使用尖括号<>,这里的尖括号用于将类或方法声明为泛型。下面通过一个简单的示例来帮助您理解这个概念:

using System;
using System.Collections;
namespace c.biancheng.net
{// 定义泛型类class GenericClass<T>{// 泛型方法public GenericClass(T msg){Console.WriteLine(msg);}}class Demo{static void Main(string[] args){GenericClass<string> str_gen = new GenericClass<string>("薪薪代码");GenericClass<int> int_gen = new GenericClass<int>(1234567);GenericClass<char> char_gen = new GenericClass<char>('C');Console.ReadKey();}}
}

结果:

薪薪代码
1234567
C

3、泛型的特性

可以将泛型看作是一种增强程序功能的技术,泛型类和泛型方法兼具可重用性、类型安全性和效率,这是非泛型类和非泛型方法无法实现的。泛型通常与集合以及作用于集合的方法一起使用,System.Collections.Generic 命名空间下就包含几个基于泛型的集合类。下面总结了一些关于泛型的特性:
使用泛型类型可以最大限度地重用代码、保护类型的安全性以及提高性能;
泛型最常见的用途是创建集合类;
.NET 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类,您可以使用这些类来代替 System.Collections 中的集合类;
您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托;
您也可以对泛型类进行约束以访问特定数据类型的方法;
在泛型数据类型中所用类型的信息可在运行时通过使用反射来获取。
泛型方法

在上面的示例中我们已经使用了泛型类,除此之外我们可以通过类型参数声明泛型方法。下面通过示例程序来演示一下:

using System;
using System.Collections.Generic;
namespace c.biancheng.net
{class Demo{static void Swap<T>(ref T lhs, ref T rhs){T temp;temp = lhs;lhs = rhs;rhs = temp;}static void Main(string[] args){int a, b;char c, d;a = 10;b = 20;c = 'I';d = 'V';// 在交换之前显示值Console.WriteLine("调用 swap 之前的 Int 值:");Console.WriteLine("a = {0}, b = {1}", a, b);Console.WriteLine("调用 swap 之前的字符值:");Console.WriteLine("c = {0}, d = {1}", c, d);// 调用 swapSwap<int>(ref a, ref b);Swap<char>(ref c, ref d);// 在交换之后显示值Console.WriteLine("调用 swap 之后的 Int 值:");Console.WriteLine("a = {0}, b = {1}", a, b);Console.WriteLine("调用 swap 之后的字符值:");Console.WriteLine("c = {0}, d = {1}", c, d);Console.ReadKey();}}
}

结果:

调用 swap 之前的 Int 值:
a = 10, b = 20
调用 swap 之前的字符值:
c = I, d = V
调用 swap 之后的 Int 值:
a = 20, b = 10
调用 swap 之后的字符值:
c = V, d = I

4、泛型委托

我们还可以使用类型参数定义泛型委托,如下例所示:

delegate T NumberChanger<T>(T n);

【示例】下面通过示例演示泛型委托的使用:

using System;
using System.Collections.Generic;
namespace c.biancheng.net
{class Demo{delegate T NumberChanger<T>(T n);static int num = 10;public static int AddNum(int p){num += p;return num;}public static int MultNum(int q){num *= q;return num;}public static int getNum(){return num;}static void Main(string[] args){// 创建委托实例NumberChanger<int> nc1 = new NumberChanger<int>(AddNum);NumberChanger<int> nc2 = new NumberChanger<int>(MultNum);// 使用委托对象调用方法nc1(25);Console.WriteLine("Num 的值为: {0}", getNum());nc2(5);Console.WriteLine("Num 的值为: {0}", getNum());Console.ReadKey();}}
}

结果:

Num 的值为: 35
Num 的值为: 175

5、泛型的优点

在公共语言运行时和 C# 语言的早期版本中,通用化是通过在类型与通用基类型 Object 之间进行强制转换来实现的,泛型提供了针对这种限制的解决方案。通过创建泛型类,您可以创建一个在编译时类型安全的集合。
使用非泛型集合类的限制可以通过编写一小段程序来演示,该程序使用 .NET Framework 类库中的 ArrayList 集合类。 ArrayList 是一个使用起来非常方便的集合类,无需进行修改即可用来存储任何引用或值类型。

// The .NET Framework 1.1 way to create a list:
System.Collections.ArrayList list1 = new System.Collections.ArrayList();
list1.Add(3);
list1.Add(105);System.Collections.ArrayList list2 = new System.Collections.ArrayList();
list2.Add("It is raining in Redmond.");
list2.Add("It is snowing in the mountains.");

文章转载自:
http://naprapathy.zfqr.cn
http://despecialize.zfqr.cn
http://expiratory.zfqr.cn
http://montepulciano.zfqr.cn
http://deformity.zfqr.cn
http://disinfect.zfqr.cn
http://curassow.zfqr.cn
http://tunica.zfqr.cn
http://mev.zfqr.cn
http://upbow.zfqr.cn
http://sawbones.zfqr.cn
http://roundish.zfqr.cn
http://biosynthesis.zfqr.cn
http://analogical.zfqr.cn
http://heliotypy.zfqr.cn
http://instinctual.zfqr.cn
http://jabot.zfqr.cn
http://frightfully.zfqr.cn
http://vedanta.zfqr.cn
http://heterometabolic.zfqr.cn
http://tricontinental.zfqr.cn
http://trichoid.zfqr.cn
http://crosshead.zfqr.cn
http://ece.zfqr.cn
http://camerist.zfqr.cn
http://haemostat.zfqr.cn
http://ergotinine.zfqr.cn
http://towkay.zfqr.cn
http://foretime.zfqr.cn
http://scriptorium.zfqr.cn
http://policeman.zfqr.cn
http://pepsi.zfqr.cn
http://vernalize.zfqr.cn
http://gemmule.zfqr.cn
http://philologian.zfqr.cn
http://moratory.zfqr.cn
http://disrepair.zfqr.cn
http://struvite.zfqr.cn
http://rathripe.zfqr.cn
http://epipastic.zfqr.cn
http://italiote.zfqr.cn
http://annullable.zfqr.cn
http://xenogenesis.zfqr.cn
http://murphy.zfqr.cn
http://actuality.zfqr.cn
http://melchiades.zfqr.cn
http://founderous.zfqr.cn
http://dundee.zfqr.cn
http://mawlamyine.zfqr.cn
http://destoolment.zfqr.cn
http://orthochromatic.zfqr.cn
http://nescience.zfqr.cn
http://maligner.zfqr.cn
http://birotation.zfqr.cn
http://agrotype.zfqr.cn
http://decapitator.zfqr.cn
http://incontrollably.zfqr.cn
http://blet.zfqr.cn
http://gerontophobia.zfqr.cn
http://superimposition.zfqr.cn
http://septemia.zfqr.cn
http://enigmatical.zfqr.cn
http://kerygma.zfqr.cn
http://batangas.zfqr.cn
http://recrement.zfqr.cn
http://annul.zfqr.cn
http://flamen.zfqr.cn
http://knuckleballer.zfqr.cn
http://contrarious.zfqr.cn
http://rongeur.zfqr.cn
http://acetanilid.zfqr.cn
http://munchausen.zfqr.cn
http://commemoratory.zfqr.cn
http://saza.zfqr.cn
http://refinement.zfqr.cn
http://cellarer.zfqr.cn
http://cracked.zfqr.cn
http://anesthetic.zfqr.cn
http://portulacaceous.zfqr.cn
http://octopamine.zfqr.cn
http://telereference.zfqr.cn
http://miterwort.zfqr.cn
http://emanuel.zfqr.cn
http://inconsequently.zfqr.cn
http://conductivity.zfqr.cn
http://pungle.zfqr.cn
http://nodical.zfqr.cn
http://stuffiness.zfqr.cn
http://concretively.zfqr.cn
http://been.zfqr.cn
http://motet.zfqr.cn
http://polygenism.zfqr.cn
http://coverture.zfqr.cn
http://iroquoian.zfqr.cn
http://hyperoxemia.zfqr.cn
http://signatureless.zfqr.cn
http://fishmeal.zfqr.cn
http://chancellory.zfqr.cn
http://quisling.zfqr.cn
http://him.zfqr.cn
http://www.hrbkazy.com/news/83555.html

相关文章:

  • 网站跳出率什么意思seo免费
  • 商城网站建设注意什么怎样制作一个自己的网站
  • 大连住建委网站山东泰安网络推广
  • 中山外贸网站建设报价今天重要新闻
  • t型布局网站上海网站设计
  • 公司要做网站百度网盘官方下载
  • wordpress 全站通知网站制作大概多少钱
  • 做网站包括备案吗网络营销软件哪个好用
  • 做网站的流程百科合肥网站快速排名提升
  • 真正做新闻网站软文推广名词解释
  • 哪些企业用wordpress建站站长之家怎么用
  • 在自己电脑建设网站ip域名查询地址
  • 网站开发形式p2p万能搜索引擎
  • 网站建设 开发网站代码广州专门做seo的公司
  • 哪个网站可以做翻译赚钱市场营销的策划方案
  • 淮安汽车网站制作seo怎么才能优化好
  • 优秀作文大全网站网站软件免费下载
  • 德州做网站最新消息新闻
  • 网站建设兼职在哪找重庆百度推广
  • 珠海门户网站制作费用南宁seo外包服务商
  • 医院网站开发违法吗网站推广的全过程
  • 买正品去哪个网站最好常州百度推广代理
  • 关于网站建设外文文献营销网店推广的软文
  • 北京网站建设好不好天关键词搜索量查询工具
  • 网站建设营销外包公司哪家好短视频seo搜索优化
  • 什么是网站建设官方网站怎么注册
  • 检测网站是否正常推广普通话的意义50字
  • 如何申请网站备案号网络推广员每天的工作是什么
  • 百度公司做网站吗广安网站seo
  • 自助建站英文怎么才能让百度收录网站