问题标签 [type-safety]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
305 浏览

java - 闭包意味着完全类型安全的标准?

结合闭包(FCM)和泛型,是否有可能拥有完全类型安全的标准。

我已经阅读了类型安全标准的 JPA 2.0 规范。但是还是有些欠缺的。

此外,我只是在此处使用标准作为总体提高代码类型安全性的示例。我大量使用 java 的静态类型来让我更快地编写代码。但结果我时不时地被忽略输入的代码部分咬伤。例如 HQL 查询。

0 投票
6 回答
2466 浏览

c# - 为什么我不能从 long 派生?

我的函数返回一些长值,其中包含低 32 位和高 32 位中的两个值。

我认为处理返回值的最佳方法是从 long 派生我的自定义类型并提供类型扩展器,如 GetLowerValue()、GetHigherValue()。

问题是 .NET 不允许从 long 派生

如果你编译那个

你得到:

为什么要这样设计,如何克服它?

谢谢

0 投票
1 回答
376 浏览

httpcontext - HttpContext.Items 的类型安全替代方案

我正在 ASP.NET 中实现一个 HTTP 模块,以根据请求的 IP(一个 GeoIP 模块)识别地理信息,我需要将东西放在某个地方,以便处理程序或以后的模块可以检查。

除了 HttpContext.Items (它不是类型安全的)还有其他不错的选择吗?

0 投票
3 回答
1038 浏览

vb.net - 使用字节文字

我正在使用以下函数来增亮颜色值(它是我的代码中的 lambda,但这不应该有所不同):

它不会编译,因为编译器将255and解释2为整数而不是字节,从而产生 type 的结果Integer。不幸的是,没有字节类型的字符,所以我不能只写255B或类似的东西。

该问题有一些明显的解决方法:

第一个只是丑陋且难以阅读,因为每个文字都需要CByted。第二个以整数进行计算,然后将结果转换为字节,这还可以,但不如纯字节操作那么优雅。第三种解决方法不需要CBytes,但它的缺点很明显。

我是否错过了一些(优雅的)第四个选项,它允许我做 Byte-only-math 而不会用 CBool​​s 弄乱我的公式?

0 投票
3 回答
9463 浏览

java - Java中的泛型和排序

假设您在 Java 中编写了一个静态函数来对数组进行排序,就像Arrays.sort(). 问题Arrays.sort()在于它接收一个对象数组,ClassCastException如果它的元素没有实现则抛出一个Comparable

所以你希望你的函数接收一个子类型的数组作为参数Comparable。像这样的东西可以工作:

该签名的问题在于,您仍然可以传递带有整数和字符串的 Comparables 数组,这将导致RuntimeException.

那么,如何创建一个只接收其元素实现 Comparable 并且具有所有相同类型(例如 Integer、String 等)的数组的函数?

0 投票
8 回答
3232 浏览

c - 如果我转换一个函数指针,改变参数的数量会发生什么

我刚刚开始研究 C 中的函数指针。为了理解函数指针的转换是如何工作的,我编写了以下程序。它基本上创建了一个指向带有一个参数的函数的函数指针,将其转换为具有三个参数的函数指针,然后调用该函数,提供三个参数。我很好奇会发生什么:

这编译和运行没有错误或警告(Linux / x86 上的 gcc -Wall)。我的系统上的输出是:

显然,多余的论点只是默默地丢弃了。

现在我想了解这里到底发生了什么。

  1. 至于合法性:如果我正确理解将函数指针转换为另一种类型的答案,这只是未定义的行为。所以这个运行并产生合理结果的事实只是纯粹的运气,对吗?(或编译器编写者的好意)
  2. 为什么 gcc 不会警告我这一点,即使是 Wall?这是编译器无法检测到的吗?为什么?

我来自 Java,其中类型检查要严格得多,所以这种行为让我有点困惑。也许我正在经历文化冲击:-)。

0 投票
10 回答
27704 浏览

c++ - 什么是类型安全以及“类型安全”的替代方案是什么?

可能的重复:
什么是类型安全的?
什么是类型安全?

我正在阅读有关 C++ 向量的内容,有人提到C 中memcpyprintf函数不是类型安全的。文章在这里:http://en.wikipedia.org/wiki/Vector_(C%2B%2B)

问题:用简单的英语来说,什么是类型安全以及“类型安全”的替代方案是什么?

0 投票
2 回答
293 浏览

c - 不安全的转换

以下转换安全吗?

我不认为for循环中的上述转换是安全的(我认为它取决于平台)。如果我错了,请纠正我。我很惊讶,因为即使使用-Wall -pedanticgcc 中的选项编译代码,也没有给出任何警告。

0 投票
3 回答
537 浏览

vb.net - VB.NET 中的泛型

现在,作为一名 C# 程序员,我知道泛型很棒。但是,在涉足一些 VB.NET 时,我发现以下不会导致编译器错误:

为什么是这样?我知道您不需要在 VB.NET 中进行强制转换,但我认为这会扼杀使用泛型的主要原因 - 类型安全。

编辑:我没有严格的选项,因为这不是一个真正的编程练习,只是我在理论上看看 VB.NET。这是一个理论上的问题,因为我期望它会导致编译器错误,即使选项严格关闭,就像泛型类型的一个特性一样。

0 投票
1 回答
222 浏览

wpf - 只能采用某种类型的子元素的选择器?

我需要编写一个应该只采用某种类型的子控件的控件。从功能上讲,它的工作方式类似于 Selector,因为我可以选择/激活它的子项,但似乎我不能从 Selector 派生,因为 ItemsControl 可以采用任何类型的子项(对象)。我真的很想在这里有编译时类型安全。因此,当添加错误类型的孩子时抛出异常不是一种选择。

这个约束似乎是必要的,因为父控件需要依赖其子控件的某些属性和行为。孩子与父母之间也有一些直接的交流。

在 WPF 中通常如何处理这样的事情。