强类型,弱类型和推断类型

一、强类型

在编译时就知道的类型。如:

int i=1;

能点出来的也是强类型。

二、弱类型

在运行时才知道的类型。

dynamic dynamic= new ExpandoObject();
            dynamic.Name = "张三";

通过索引器读出来的是弱类型。如:dr["id"];

三、推断类型

var s="ss";

反编译后发现s是string类型的。说明,在编译期间已经知道了类型。所以,var类型是强类型。

var 只能方法内部的变量,不能用于方法参数的类型(没有赋值,不知道是什么类型),不能用于类成员变量的类型(成员变量会有默认值,不知道类型无法给默认值)

时间: 2024-12-24 01:20:23

强类型,弱类型和推断类型的相关文章

强类型、弱类型、动态类型、静态类型语言

收集了一些关于编程语言分类的文章: 一. 作者:rainoftime链接:https://www.zhihu.com/question/19918532/answer/21647195来源:知乎 类型系统的一些概念,众说纷纭,使用上也比较乱.有些东西,甚至不好严格定义.以下算学术界的一种相对"严格"的说法. 1. 先定义一些基础概念 Program Errors trapped errors.导致程序终止执行,如除0,Java中数组越界访问 untrapped errors. 出错后继

关于强类型-弱类型

强类型:为所有变量指定数据类型称为“强类型”. 强/弱类型是指类型检查的严格程度的. 语言有无类型,弱类型和强类型三种. 1.无类型的不检查,甚至不区分指令和数据. 2.弱类型的检查很弱,仅能严格的区分指令和数据. 3.强类型的则严格的在编译期进行检查. 强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作. 复制去Google翻译翻译结果

强类型弱类型

GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=525 [强类型弱类型]一直说C#是强类型语言,通俗地讲,便是指C#中的"变量"在开发时的类型便是明确的:String便是String,Int32就是Int32,毫无争议.强类型的好处有很多,张嘴便可随意举上几例: 能够享受代码提示功能? 能够获得重构工具的支持? 能够在编译期发

简单理解弱类型、动态类型、解释型语言

弱类型和强类型 简单的说,二者的区别就是是否偏向于容忍隐式类型转换. $str = 'abc'; //str是一个字符串 $str = 1; //这时候又变成整形 if($str){}; //这时候又是一个布尔型 所以php是弱类型语言,变量类型会自动转换. 动态类型和静态类型 简单的说,二者的区别就是声明变量的时候是否需要指定变量类型. php是动态类型语言,声明变量时无需指定类型. 注意: 一个语言是不是强类型语言和是不是动态类型语言没有必然联系. 动态语言和静态语言 简单的说,二者的区别就

泛型中的类型约束和类型推断

前一篇文章介绍了泛型的基本概念.在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断. 类型约束 相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束. 类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类型约束是很有用的. 回到前一篇例子中的泛型方法,这个泛型方法就要求可指定的类型实参必须实现了IComparable接口. 为什么会有这个约束呢?原因很简单,因为我们在泛型方法的实现中直接调用T类

推断类型var

1.为什么使用推断类型var var可以根据变量的初始值自动推断局部变量类型,当无法确定所用变量的具体类型时可使用var 2.如何使用推断类型var 客户端代码 static void Main(string[] args) { var a = 10; var className = "var的学习"; //var student = new Student{StudentName = "王华", Age = 27};//创建对象 var student = new

O-C相关-08-动态类型与静态类型

08-动态类型与静态类型 1, 什么是动态类型和静态类型 1) 动态语言 又叫动态编程语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化.比如众所周知的ECMAScript(JavaScript)便是一个动态语言.除此之外如Ruby.Python等也都属于动态语言,而C.C++等语言则不属于动态语言. 而其实我们平时说的"动态语言"应该指的是"动态类型语言".至少我之前一直是这么认为的. 2) 动态类型语言 在运行时确定类

scala学习笔记-类型参数中协变(+)、逆变(-)、类型上界(<:)和类型下界(>:)的使用

转载自  fineqtbull   http://fineqtbull.iteye.com/blog/477994 有位je上的同学来短信向我问起了Scala类型参数中协变.逆变.类型上界和类型下界的使用方法和原理,自己虽然也刚学不久,在主要调查了<Programing in Scala>的19章后,试着在下面做一个总结.如有错误之处还请各位指正. 先说说协变和逆变(实际上还有非变).协变和逆变主要是用来解决参数化类型的泛化问题.由于参数化类型的参数(参数类型)是可变的,当两个参数化类型的参数

TS(6)-- 类型推论、类型兼容性、高级类型

2019-11-09: 学习内容:类型推论.类型兼容性.高级类型 一.类型推论:类型是在哪里如何被推断的 在有些没有明确指出类型的地方,类型推论会帮助提供类型.如:let x = 3;  变量x的类型被推断为数字. 这种推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时.大多数情况下,类型推论是直截了当地. 最佳通用类型:如: let x = [0, 1, null];   两种选择:number 和 null , 计算通用类型算法会考虑所有的候选类型,并给出一个兼容所有候选类型的类型