C#是强类型语言还是弱类型语言?

C#是强类型语言还是弱类型语言?,c#,strong-typing,weakly-typed,C#,Strong Typing,Weakly Typed,有人能澄清一下C是强类型语言还是弱类型语言吗?并解释原因 如果我有一个名为concat的函数,它可以接受任何对象,那么这算是弱类型的吗 function concat(Object stuff) { //do something here to stuff } 是一篇关于这个主题的博客文章,作者(在他写这篇文章时)是C#编译器的主要开发人员之一 简而言之,这个问题本身是有缺陷的,无法以目前的形式得到合理的回答。是一篇关于这个主题的博客文章,作者(在撰写文章时)是C#编译器的主要开发人员之

有人能澄清一下C是强类型语言还是弱类型语言吗?并解释原因

如果我有一个名为
concat
的函数,它可以接受任何对象,那么这算是弱类型的吗

function concat(Object stuff)
{
   //do something here to stuff
}
是一篇关于这个主题的博客文章,作者(在他写这篇文章时)是C#编译器的主要开发人员之一

简而言之,这个问题本身是有缺陷的,无法以目前的形式得到合理的回答。

是一篇关于这个主题的博客文章,作者(在撰写文章时)是C#编译器的主要开发人员之一

简言之,这个问题本身是有缺陷的,无法以其当前形式得到合理的回答。

根据,C#是一种强类型语言。

根据,C#是一种强类型语言。

来自

C#是强类型语言还是弱类型语言?

那没用。

我不怀疑。有趣的是,如果你把这个问题改成 “和”问题,答案是一样的

什么?你是说,C#是强类型语言还是弱类型语言?

是的,C#是一种强类型语言,也是一种弱类型语言

我很困惑。

我也是。也许你应该确切地告诉我你的意思 “强类型”和“弱类型”

嗯。我不知道这些术语是什么意思,所以也许这就是我应该问的问题。这对我来说意味着什么 一种语言是“弱类型”还是“强类型”?

“弱类型”是指“这种语言使用类型验证系统” “强类型”的意思是“这种语言” 使用我认为有吸引力的字体系统”

C#是强类型语言还是弱类型语言?

那没用。

我不怀疑。有趣的是,如果你把这个问题改成 “和”问题,答案是一样的

什么?你是说,C#是强类型语言还是弱类型语言?

是的,C#是一种强类型语言,也是一种弱类型语言

我很困惑。

我也是。也许你应该确切地告诉我你的意思 “强类型”和“弱类型”

嗯。我不知道这些术语是什么意思,所以也许这就是我应该问的问题。这对我来说意味着什么 一种语言是“弱类型”还是“强类型”?

“弱类型”是指“这种语言使用类型验证系统” “强类型”的意思是“这种语言” 使用我认为有吸引力的字体系统”


弱类型和弱类型都有很多很多定义,以至于在使用术语时需要定义术语的含义。我发现一个有用的定义是“该语言是否强迫我为参数之类的东西指定类型?”这将C#等语言与Javascript等语言区分开来,我发现这一区别很有用


要求某人命名类型而不是依赖“duck typing”这样的东西在静态分析中会产生优势,但在指定共享公共功能的类型时会产生劣势。由于这个原因,这些语言中的许多都发展了复杂的类型关系规范系统,通常是基于第一类的编程,然后是复杂的模板系统或推理系统,这样程序员就可以说“类型A是类型B的子集”或“类型C是一种元类型,可以应用于满足条件D和E的任何其他类型”等等。

对于弱类型和弱类型,有很多种定义,您需要在使用它时定义术语的含义。我发现一个有用的定义是这种语言是否强迫我为参数之类的东西指定一种类型?”这将像C#这样的语言与Javascript这样的语言区分开来,我发现这一区别很有用

要求某人命名一个类型,而不是依赖“duck-typing”之类的东西“在静态分析中有优势,但在指定共享公共功能的类型时有劣势。由于这个原因,这些语言中的许多都发展了复杂的类型关系规范系统,通常是基于第一类的编程,然后是复杂的模板系统或推理系统,这样程序员就可以说“类型A是类型B的子集”或“类型C是一种元类型,可以应用于满足条件D和E的任何其他类型”,依此类推。

C#是强类型

ECMA-334将C#定义为“C#(发音为“C Sharp”)是一种简单、现代、面向对象且类型安全的编程语言。”

维基百科定义了类型安全

类型安全性是强安全性的众多定义之一 类型;但是类型安全和动态类型是相互兼容的

维基百科将强类型定义为

在计算机科学和计算机编程中,类型系统被称为 当指定一个或多个限制时,具有强键入功能 如何处理涉及不同数据类型值的操作 混合。强类型的反面是弱类型

也许最好问问C#是否是一种类型安全语言,因为如果编译器进行类型检查,“强类型”和“弱类型”究竟意味着什么,没有人能达成一致

C#确实有一些类似于动态语言的结构可用,但值得注意的是,这些结构在编译时仍然是类型安全的

从Visual C#3.0开始,在方法中声明的变量 作用域可以具有隐式类型
var
。隐式类型的本地 变量是强类型的,就像您有dec一样
int i = 10;
i = "ten";