强类型和弱类型的变量都有两个属性:类型和值。

强类型的变量类型是不能改变的,弱类型的变量类型是随需改变的,这是强弱的真正含义。

我们在编写c#代码时,变量类型是明确的,不可更改的,如string就是string,int就是int,这就是强类型,好处:

1.能够享受代码提示功能

2.能够获得重构工具的支持

3.能够在编译期发现更多错误

弱类型:Object,在C#中Object是所有类型的基类,任何对象都可以使用Object来引用。可是一旦转化成Object的变量之后,代码提示便消失了;即使我们“明确”对象的确切类型,也必须通过Cast才能使用——更何况它形成了一种被“滥用”或“误用”的机会。例如一段错误代码可能会传入一个不符合约定类型的对象,那么就会造成错误。更严重的是,这样的错误可能只要在 “运行时”才能被发现,编译器对此无能为力。

[泛型的概念]
(1)没有泛型的时候,所有的对象都是以object为基础,如果要使用时必须进行强制类型转换,如果对于值类型,则会导致不断拆箱装箱的过程,对系统消耗很大。
(2)使用泛型时不需要通过object类进行装箱拆箱,使用的时候都会是确定的类型。
(3)泛型的概念一开始是由集合引入,因为集合中的类型都是基于object类。可以在集合中使用泛型类。
(4)泛型不仅仅用于集合,还可以用于委托、接口和方法。

泛型的优点:高性能、类型安全、代码的重用与扩展

 

c#中的强类型、弱类型和泛型的更多相关文章

  1. qjson中把记录或类型或泛型数组转换为json字符串

    unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  2. [转]c# 泛类型(泛型) 以及强类型与弱类型的 理解及优化

    [泛型的概念](1)没有泛型的时候,所有的对象都是以object为基础,如果要使用时必须进行强制类型转换,如果对于值类型,则会导致不断拆箱装箱的过程,对系统消耗很大.(2)使用泛型时不需要通过obje ...

  3. C语言,C#,Java,JavaScript之强类型与弱类型

    奇葩的我今天想到一个坑爹的问题,都说Java是强类型的语言,JavaScript是弱类型的语言. 嗯嗯,那初学时候的C语言呢? 呵呵哒,突然觉得短路了.说Java是强类型的语言是因为遇到这样的情况: ...

  4. php弱类型比较

    前言:今天XCTF题目中出现了弱类型比较,特别过来记录一下, 0x01: == 是弱类型比较,两个不同类型比较时,会自动转换成相同类型后再比较值 ===是强比较,需要比较值和类型 0x02: 看下图案 ...

  5. MVC 强类型传值Model。和弱类型传值ViewData[""]。及用EF进行增删查改(母版页的使用)

    <1> 控制器 </pre><pre name="code" class="csharp">using MvcTest.Mo ...

  6. MVC强类型和弱类型的区别

    1 强类型的处理 首先必须要有一个对象的实体类,UserINfo就是一个实体类,如下: public class UserInfo() { public  int Id{set;get;} publi ...

  7. CTF中常见的 PHP 弱类型漏洞总结

    作者:ZERO    所属团队:Arctic Shell 参考资料: http://archimesan.me/2017/12/21/php%E5%BC%B1%E7%B1%BB%E5%9E%8B%E6 ...

  8. 解释型vs编译型 动态vs静态 强类型vs弱类型

    ------------------------------------------------------------ 释型.动态语言与静态语言.强类型语言与弱类型语言的区别 编译型和解释型 我们先 ...

  9. Python 到底是强类型语言,还是弱类型语言?

    0.前言 我在上一篇文章中分析了 为什么 Python 没有 void 类型 的话题,在文章发布后,有读者跟我讨论起了另一个关于类型的问题,但是,我们很快就出现了重大分歧. 我们主要的分歧就在于:Py ...

随机推荐

  1. Android实战项目——家庭记账本(四)

    今天是开发的第四天,完成的主要内容如下: 1.账单查询功能的完善以及查询结果的显示和编辑 2.侧边栏布局的实现 3.首页fragment中本月与上月对比账目情况 实现的效果如图: 已添加的账单内容以及 ...

  2. 本地服务开启MySQL57提示本地计算机上MySQL服务启动后停止。。。。

    1.首先以管理员身份启动cmd,要不然服务禁止访问. 2.然后在cmd中输入 mysqld --remove mysql或者mysqld --remove mysql57来移除服务. 3.然后进入My ...

  3. Linux下的python3,virtualenv,Mysql、nginx、redis等常用服务安装配置

    Linux下的python3,virtualenv,Mysql.nginx.redis等常用服务安装配置   学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环 ...

  4. linux--工具参考篇

    linux下的好用工具 工具好多!!! gdb调试利器 ldd查看程序依赖库 lsof一切皆文件 ps进程查看器 pstack 跟踪进程栈 strace 跟踪进程中的系统调用 ipcs 查询进程间通信 ...

  5. 牛客练习赛56 B 小琛和他的学校

    题目链接:https://ac.nowcoder.com/acm/contest/3566/B 思路:一条路可把图分为左右两部分. l_ci, l_peo, r_ci, r_peo, w 分别为左边城 ...

  6. 代数式到c语言表达式和常用的c语言数学库函数_pow_sqrt_exp_fabs_abs

    数学知识来源于生活,因此我们需要把相关的数学的知识在自己生活找到实例. #include "common.h" #include <stdio.h> #include ...

  7. Lucene索引维护(添加、修改、删除)

    1. Field域属性分类 添加文档的时候,我们文档当中包含多个域,那么域的类型是我们自定义的,上个案例使用的TextField域,那么这个域他会自动分词,然后存储            我们要根据数 ...

  8. 170.分组-group、permission、user的操作

    分组 1.Group.objects.create(group_name):创建分组. 2.group.permissions:某个分组上的权限.多对多关系. (1)group.permissions ...

  9. vim编辑器未正常关闭时解决方案

    目录 vim编辑器未正常关闭时解决方案 问题描述 .swp..swo文件产生原因 解决方案 后记 hosts文件 sudo命令小记 vim编辑器未正常关闭时解决方案 问题描述 在mac上的/etc目录 ...

  10. List<SelectListItem> 转为 SelectList

    List<SelectListItem> 转为/转换 SelectList SelectList slPayCh = new SelectList(GetPayChannels(),&qu ...