函数的参数不同叫多态,函数的参数类型可以不确定吗?

函数的返回值只能是一个吗?函数的返回值可以不确定吗?

泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行。

下面是两个经典示例:

1.输入一个字符串,转化为想要的类型。

利用泛型的特性,返回值可以是指定的类型。

2.比较两个对象,返回值较大的一个。

using System;

using System.Collections.Generic;

using System.Text;

namespace FamilyManage

{

class CGeneric

{

//数据转换

static public T Convert<T>(string s) where T : IConvertible

{

return (T)System.Convert.ChangeType(s, typeof(T));

}

//取两个数较大的一个

static public T Max<T>(T first, T second) where T : IComparable<T>

{

if (first.CompareTo(second) > 0)

return first;

return second;

}

//使用

static public void test()

{

int iMax = Max(123, 456);

double dMax = Max<double>(1.23, 4.56);//可以指定返回类型

int iConvert = Convert<int>("123456");

float fConvert = Convert<float>("123.456");

System.Windows.Forms.MessageBox.Show(iMax + "|" + dMax + "|" + iConvert + "|" + fConvert);

}

}

}

  System.Convert.ChangeType(s, typeof(T));这个函数,在以往的项目中用的比较少,用的最多的还是Convert.ToInt()和Convert.ToDouble()。一般多是把一个字符串转化需要的整型数据或者浮点型数据。例如:

  

            string intString="";
int result=System.Convert.ToInt32(intString);
Console.WriteLine(result); //输出123

  也有用Int类或者Double类的Parse或者TryParse函数进行转化的,在此不在举例。把注意力拉回到System.Convert.ChangeType(s, typeof(T));这个函数。

  ChangeType:返回一个指定类型的对象,该对象的值等效于指定的对象。此方法有四种函数重载。如下面的表格所示:

        double d = -2.345;
int i = (int)Convert.ChangeType(d, typeof(int)); Console.WriteLine("The double value {0} when converted to an int becomes {1}", d, i); string s = "12/12/98";
DateTime dt = (DateTime)Convert.ChangeType(s, typeof(DateTime)); Console.WriteLine("The string value {0} when converted to a Date becomes {1}", s, dt);

  

                                          想要了解更多请参看MSDN的Convert类。

泛型(CSDN转载)的更多相关文章

  1. 如何优雅地从CSDN转载文章

    复制粘贴应该是最显而易见的方法,但是不仅会有丢失内容,而且格式也会丢失.要想达到更好的效果,可以从html源码入手. 1.在chrome浏览器中打开要转载的文章,右键选择检查 2.在chrome的右方 ...

  2. c#泛型约束(转载)

    博客地址:https://www.cnblogs.com/zhengwk/p/5541921.html 六种类型的约束: T:结构 类型参数必须是值类型.可以指定除 Nullable 以外的任何值类型 ...

  3. [CSDN转载]致C语言初学者—指针注意项

    在论坛里经常见到一些新人对指针提出一些问题,作为一个经历过许多错误后的新手,我想把自己的经历说出来,避免让后来人继续这样的错误.    在讲解指针之前,需要理解一下内存空间.内存是随机存取器,计算机上 ...

  4. 关于CSDN的一些信息

    CSDN资源共享规范 为广大用户提供资源(包括但不限于文章.文档.音频.视频.图片.课程.软件.源代码等相关资源)共享的网络存储平台 与不得违反国家法律法规相关的规定 不得上传与CSDN提供的服务内容 ...

  5. Java 类反射机制分析

    Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...

  6. Android反射机制实现与原理

    本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识: 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或 ...

  7. android中反射机制

    本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识: 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或 ...

  8. std(标准库)和STL(标准模板库)的关系

    C++标准库的内容分为10类: C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5.字符串 C6.容器 C7.迭代器支持 C8.算法 C9.数值操作 C10.本地化: 下面分类详解: ...

  9. apt-get remove, apt-get autoremove和aptitude remove的区别

    这篇文章的图片链接发生了问题,无法正常查看图片,所以我在CSDN转载一下,特此声明. apt-getremove的行为我们很好理解,就是删除某个包的同时,删除依赖于它的包,例如:A依赖于B, B依赖于 ...

随机推荐

  1. Bat再次小试

    继<Bat小试牛刀>之后,今天又需要一个小的bat文件.需求是这样的,有一个windows服务(服务名:xxxx,进程映像名:xxxx.exe)被数据库拖慢了,但目前又没时间调整代码,所以 ...

  2. 《新手养成记》--第一篇 iOS手机号正则判断和获取验证码

    今天是开通一个新博客开启新的一年,同时也是对自己的过去做一个告别.介绍一下博主自己,资深iOS屌丝男,今天写这个博客就是刻意拉低逼格的,前两年写的博客为了装那什么,故意写的高大上,其实呵呵哒...年假 ...

  3. java算法 蓝桥杯(题+答案) 方格填数

    6.方格填数  (结果填空) 如下的10个格子 (如果显示有问题,也可以参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案 ...

  4. Asp.net MVC 视图使用像Ajax,ViewBag提示为找到上下文

    不知是什么原因,所有的视图中Ajax,ViewBag之类的都提示为找到上下文(由于换了个版本Vs,猜测应该是Vs的原因),然后顺利在网上找到了解决方案. 给地址链接:https://social.ms ...

  5. SVNManager配置

    1.svn与apache的安装 yum install -y subversion httpd   httpd.conf添加如下内容: LoadModule dav_svn_module module ...

  6. 求取水仙花数 && 将整数分解成质因数

    [程序3] 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如: 153是一个"水仙花数", ...

  7. 3856: Monster

    3856: Monster Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 351  Solved: 161[Submit][Status][Discuss ...

  8. Android四大组件详解

    注:本文主要来自网易的一个博主的文章,经过阅读,总结,故留下文章在此 Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content P ...

  9. mac上的kindle打开mobi文件的方式

    刚刚在macpro上下载了一个kindle文件,但是双击我某个目录下的.mobi文件,提示: “Kindle”打不开格式为“Kindle Document”的文件,可是明明手机和pad上是可以打开的. ...

  10. iOS网络编程笔记——GCDAsyncSocket使用

    CocoaAsyncSocket为Mac和iOS提供了易于使用且强大的异步通信库. 简单的Socket通信包括了建连.断开连接.发送socket业务请求.重连这四个基本功能. 1.建立连接:GCDAs ...