问题标签 [primitive]

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 投票
3 回答
4530 浏览

java - 这真的是扩大与自动装箱吗?

我在另一个问题的回答中看到了这一点,参考了 Java 规范的缺点:

还有更多的缺点,这是一个微妙的话题。看看这个

这里将打印“long”(我自己没有检查过),因为编译器选择加宽而不是自动装箱。使用自动装箱时要小心,或者根本不要使用它!

我们确定这实际上是扩大而不是自动装箱的一个例子,还是完全是别的东西?

在我最初的扫描中,我同意这样一种说法,即输出将是“长”的,i因为它被声明为一个原语而不是一个对象。但是,如果你改变了

输出将打印“整数”

这里到底发生了什么?我对java的编译器/字节码解释器一无所知......

0 投票
11 回答
152414 浏览

c# - 泛型类型转换 FROM 字符串

我有一个类,我想用它来存储另一个类的“属性”。这些属性只有一个名称和一个值。理想情况下,我希望能够添加类型化属性,以便返回的“值”始终是我想要的类型。

类型应该始终是原始类型。这个类继承了一个抽象类,它基本上将名称和值存储为字符串。这个想法是这个子类将为基类添加一些类型安全性(以及为我节省一些转换)。

所以,我创建了一个(大致)这样的类:

所以问题是:

是否有一种“通用”方法可以将字符串转换回原语?

我似乎找不到任何通用接口来链接全面的转换(像ItryParsable这样的东西本来是理想的!)。

0 投票
8 回答
29356 浏览

c# - 通用类型检查

有没有办法强制/限制传递给原语的类型? (布尔、整数、字符串等)

现在,我知道您可以通过where子句将泛型类型参数限制为类型或接口实现。但是,这不符合原语(AFAIK)的要求,因为它们并不都有共同点(除了有人说之前的对象!:P)。

所以,我目前的想法是咬紧牙关,做一个大的switch语句,并在失败时抛出一个ArgumentException 。


编辑1:

只是为了澄清:

代码定义应该是这样的:

和实例化:


编辑 2

@Jon Limjap - 好点,我已经在考虑了。我确信有一个通用方法可用于确定该类型是值类型还是引用类型。

这对于立即删除许多我不想处理的对象很有用(但是您需要担心使用的结构,例如Size)。有趣的问题不是吗?:)

这里是:

取自MSDN


我很好奇。这可以使用扩展方法在 .NET 3.x 中完成吗?创建一个接口,并在扩展方法中实现该接口(这可能比有点胖的开关更干净)。另外,如果您以后需要扩展到任何轻量级自定义类型,它们也可以实现相同的接口,而无需更改基本代码。

你们有什么感想?

可悲的消息是我在框架 2 中工作!:D


编辑 3

Jon Limjaps Pointer开始,这太简单了。太简单了,我几乎想哭,但这很棒,因为代码就像一个魅力!

所以这就是我所做的(你会笑的!):

添加到泛型类的代码

然后是一个小工具方法来检查类型并抛出异常,

然后需要做的就是在类构造函数中调用EnforcePrimitiveType()。任务完成!:-)

唯一的缺点是,它只在运行时(显然)而不是设计时抛出异常。但这没什么大不了的,可以使用FxCop之类的实用程序(我们在工作中不使用)。

在此特别感谢 Jon Limjap!

0 投票
3 回答
6788 浏览

java - 为什么 .NET 不能从 Web 服务反序列化我的原始数组?

帮助!我有一个 C# 应用程序正在使用的 Axis Web 服务。一切都很好,除了长值数组总是出现 [0,0,0,0] - 正确的长度,但值没有反序列化。我尝试过使用其他原语(整数、双精度数)并且发生了同样的事情。我该怎么办?我不想改变我的服务的语义。

0 投票
2 回答
962 浏览

synchronization - 如果没有特殊的硬件指令,一个代码将如何测试和设置行为?

我发现的大多数实现都需要硬件指令来执行此操作。但是我强烈怀疑这是必需的(如果是,我不知道为什么......)

0 投票
10 回答
11515 浏览

c# - int 是 64 位 C# 中的 64 位整数吗?

在我的 C# 源代码中,我可能将整数声明为:

或者

在当前流行的 32 位世界中,它们是等价的。但是,随着我们进入 64 位世界,我是否正确地说以下内容将变得相同?

0 投票
8 回答
59843 浏览

java - 动态查找表示原始 Java 类型的类

我需要在 Java 中进行一些反射方法调用。这些调用将包括具有原始类型(int、double 等)参数的方法。反射性查找方法时指定此类类型的方法是 int.class、double.class 等。

挑战在于我正在接受来自外部源的输入,该输入将动态指定类型。因此,我还需要动态地提出这些类引用。想象一个带有参数类型列表的方法名称列表的分隔文件:

如果输入类似于java.lang.String,我知道我可以使用Class.forName("java.lang.String")该 Class 实例返回。有什么方法可以使用该方法或其他方法来获取原始类型 Classes 吗?

编辑: 感谢所有受访者。很明显,没有内置的方法可以干净地做我想做的事,所以我将满足于重用ClassUtilsSpring 框架中的类。它似乎包含 Class.forName() 的替代品,可以满足我的要求。

0 投票
5 回答
10656 浏览

java - 什么时候应该使用原语而不是包装对象?

其实这里有一个类似的题目,实用价值不大。据我了解,原语性能更好,应该在任何地方使用,除了需要与对象相关的功能(例如null检查)的情况。对?

0 投票
10 回答
63316 浏览

drawing - 如何使用 XNA 画线?

我已经阅读了一堆涉及 XNA 的教程(并且是各种版本),但我对绘制原语仍然有些困惑。一切似乎真的很复杂。

有人可以使用代码向我展示在屏幕上绘制一两条线的最简单的 XNA 实现吗?也许有一个简短的解释(包括样板文件)?

我不是游戏程序员,也没有多少 XNA 经验。我的最终目标是在屏幕上绘制一些线条,最终我将通过旋转等(手动)进行转换。然而,对于这第一步..我需要简单地画线!我记得在我古老的 OpenGL 时代,用几个方法调用画一条线是相当简单的。我应该简单地恢复使用非托管 directx 调用吗?

0 投票
4 回答
1703 浏览

java - 原语是否分配了内存地址?

我试图了解在后台声明和分配原始类型的过程。

  1. int i;
  2. i = 3;

对于 1),在内存堆栈上,它分配一个空间来存储一个名为 i 的 int 类型值 对于 2),它将值 3 分配给上面保留的空间

那里有内存地址吗?在我的印象中,内存地址总是和堆上的对象相关联的?

更新:

关于回复:

因此,对于堆栈上的每个变量,它们都被分配了一个内存地址,就像堆上的对象一样。我对么?

但是对于Java来说,不是这样吗?