Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的类型与强类型#_C#_.net - Fatal编程技术网

C# C语言中的类型与强类型#

C# C语言中的类型与强类型#,c#,.net,C#,.net,在C#中,有什么理由说强类型和刚类型?当有人说类型化类时,我想到的是对象以外的其他类型。除了object之外,几乎所有东西都是用C#键入的 一旦定义了一个非对象类,该类就是一个类型。从那里再也不能打字了 顺便说一下,这不是关于类型安全(有效内存访问和对象分配兼容性)的问题。您的术语不正确。它不是强类型的,而只是类型的 它是强类型与弱类型的对比 一旦你用这些术语来谈论它,就会有一个很大的区别 你可以在谷歌上看到它 编辑: 没有什么东西仅仅是一种类型化的语言。您有动态与静态以及弱与强类型,它们解决

在C#中,有什么理由说强类型和刚类型?当有人说类型化类时,我想到的是对象以外的其他类型。除了object之外,几乎所有东西都是用C#键入的

一旦定义了一个非对象类,该类就是一个类型。从那里再也不能打字了


顺便说一下,这不是关于类型安全(有效内存访问和对象分配兼容性)的问题。

您的术语不正确。它不是强类型的,而只是类型的

它是
强类型与弱类型的对比

一旦你用这些术语来谈论它,就会有一个很大的区别

你可以在谷歌上看到它

编辑:

没有什么东西仅仅是一种类型化的语言。您有动态与静态以及弱与强类型,它们解决了两种不同类型的问题。另一篇参考文章


术语强类型和弱类型指的是关于隐式类型转换的语言规则的僵化。强类型语言在接受隐式转换方面要严格得多,而弱类型语言则更为宽松。换句话说,很多语言都有类型,但只有一个子集有强类型


您可能会将这些术语与术语静态和动态类型混为一谈,这两个术语分别指编译类型或运行时的类型知识。从这个意义上讲,您可能听说过“键入”这个术语是静态键入的缩写。(虽然我不能说我同意使用“类型化”这个术语,但我认为这是唯一有意义的解释。)

另一个不试图定义语言是强是弱、是静态还是动态的角度

我对说“强类型”感到内疚。尤其是当我在处理我们正在维护的特定项目时。这个可怕的代码库使用DataTable处理几乎所有的事情,值作为对象从列中按索引获取,并在应用程序代码中进行大量转换。没有评论解释到底发生了什么

该系统的一部分现在正在使用EF和Linq进行重建。现在我们正在将查询投影到POCO/DTO中。因此,当我说“强类型”时,我指的是一个带有返回特定类型的泛型列表的方法的服务。是服务及其方法是强类型的,我不是说C本身。

请注意,最新的C语言规范在描述语言时实际上没有使用术语“强类型”。这与Java语言规范形成了对比,Java语言规范非常明确地表示它是强类型的

因为C语言规范没有使用这个术语,所以也没有定义它。这是你很难找到问题答案的原因之一。但是,您可以提出这样一种情况,即即使根据其规范,C#不是明确的“强类型”语言,但它确实具有强类型语言的大部分特征

为了回答你的C#问题,我建议看一看Java语言规范(Java与C#非常相似,许多基本原理即使不完全相同也非常相似)。在第4章中,它指出:

Java编程语言也是一种强类型语言, 因为类型限制了变量(§4.12)可以保存的值或 表达式可以生成的,则限制 这些值,并确定操作的含义。坚强的 静态类型有助于在编译时检测错误


我提供了这个答案,同时我也认识到其他答案提供了维基百科上关于强类型信息的链接,这个问题特别涉及C。我发现Java定义更有用,并且指向OP。

不,这不是问题所在。我非常熟悉弱/强类型之间的区别。我听到人们提到“类型化”和“强类型化”,好像它们是可以互换的。同样,这是指C#only。根据您的编辑,最好是请某人澄清他们所说的“键入”是什么意思?我总是暗示他们的意思是“强类型”。也许这样做是错误的。当然有类型化语言和非类型化语言。例如,类型化lambda演算是一种类型化语言,而非类型化lambda演算是一种非类型化语言。我不能说我是这方面的专家,但我非常确定非类型化等同于动态类型化。如果一种语言没有任何类型呢?在这种情况下,它怎么可能是“动态类型化”的?谁说“类型化类”?所有的类都是类型。这是在讨论泛型和类型推断时提到的。“类型化对象”是另一个。@4thSpace您可以链接到或引用一个示例吗?不在线。这些对话都是面对面的。不过,msdn确实说过C#是一个强类型。