Typed vs Strongly Typed in C#
在c中,是否有理由说强类型与刚类型?当有人说类型化类时,我想到的不是对象。除了对象,几乎所有东西都是用C输入的。
一旦定义了一个不是对象的类,该类就是一个类型。从那里打不到了。
顺便说一下,这不是关于类型安全(有效的内存访问和对象分配兼容性)的问题。
强类型化和弱类型化这两个术语是指有关隐式类型转换的语言规则的严格性。强类型语言对它接受的隐式转换更严格,而弱类型语言则更宽松。换句话说,许多语言都有类型,但只有一个子集有强类型。
您可能会将这些术语与术语静态和动态类型混淆,静态和动态类型分别指编译类型或运行时类型的知识。从这个意义上讲,您可能已经听说过输入这个词是静态输入的简写。(虽然我不能说我同意使用输入的术语,但我认为这是唯一有意义的解释。)
你的命名法不正确。不是
是
一旦你用这些术语来谈论它,那么就有一个很大的区别。
你可以在谷歌上到处看到。
http://en.wikipedia.org/wiki/strong_and_-weak_-typing definitions_of_22strong.22_or_22weak.22
编辑:
没有打字语言这样的东西。您有动态类型和静态类型,以及弱类型和强类型,它们处理两种不同类型的问题。另一篇参考文章
强类型语言和静态类型语言有什么区别?
请注意,最新的C语言规范并没有在其语言描述中使用"强类型"一词。这与Java语言规范相反,它们非常明确地说明了它是强类型的。
由于C语言规范没有使用该术语,因此它也没有定义它。这是你很难得到问题答案的原因之一。但是,您可以提出这样一个例子:尽管根据其规范,C并不是一种明确的"强类型"语言,但它仍然具有强类型语言的大部分特征。
为了回答你的C问题,我建议看一下Java语言规范(Java非常类似C语言,很多基本原理如果不是完全相同的话非常相似)。在第4章中,它规定:
The Java programming language is also a strongly typed language,
because types limit the values that a variable (§4.12) can hold or
that an expression can produce, limit the operations supported on
those values, and determine the meaning of the operations. Strong
static typing helps detect errors at compile time.
我提供这个答案的同时,我认识到其他答案提供了维基百科上关于强输入的信息的链接,一般来说,这个问题与c有关。我发现Java定义更有用,并且指向OP.。
另一个不试图定义语言是强还是弱、静态还是动态的角度。
我说"强类型"是有罪的。尤其是当我处理一个我们正在维护的特定项目时。这个可怕的代码库几乎所有的东西都使用数据表,值作为对象从应用程序代码中有大量强制转换的逐列索引中获取。没有评论解释到底发生了什么。
这个系统的一部分现在正在使用ef和linq进行重建。现在我们将查询投影到POCO/DTO中。所以当我说强类型时,我指的是使用一个返回为特定类型的泛型列表的方法的服务。它的服务和方法是强类型的,我不是在谈论C本身。