问题标签 [struct]

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 投票
12 回答
128966 浏览

c# - 为什么我不能在 .NET 中为结构定义默认构造函数?

在 .NET 中,值类型 (C# struct) 不能有没有参数的构造函数。根据这篇文章,这是 CLI 规范强制要求的。发生的情况是,对于每个值类型,都会创建一个默认构造函数(由编译器?),它将所有成员初始化为零(或null)。

为什么不允许定义这样的默认构造函数?

一个微不足道的用途是有理数:

使用当前版本的 C#,默认的 Rational0/0不是那么酷。

PS:默认参数会帮助 C# 4.0 解决这个问题,还是会调用 CLR 定义的默认构造函数?


Jon Skeet回答:

以您的示例为例,当有人这样做时,您希望发生什么:

它应该通过您的构造函数运行 1000 次吗?

当然应该,这就是我首先编写默认构造函数的原因。当未定义显式默认构造函数时,CLR 应使用默认归零构造函数;这样你只需为你使用的东西付费。然后,如果我想要一个包含 1000 个非默认Rationals 的容器(并且想要优化掉 1000 个结构),我将使用 aList<Rational>而不是数组。

在我看来,这个原因不足以阻止定义默认构造函数。

0 投票
6 回答
3737 浏览

c# - 如何比较相同但不受约束的泛型类型的两个元素是否相等?

可能重复:
不能将运算符 == 应用于 C# 中的泛型类型吗?

我有以下泛型类,编译器抱怨“ Operator '!=' cannot be applied to operands of type 'TValue' and 'TValue'”(参见CS0019):

如果我限制TValueclass,我可以使用Object.Equals(). 由于我对结构和类都需要这个,但如果我能避免这种情况,我会很高兴。

所以问题是,我如何比较两个相同但不受约束的泛型类型的元素是否相等?

0 投票
5 回答
1696 浏览

c# - 如何在 C# 中的结构上强制使用工厂

我有 ac# 结构,我需要禁止在其上调用 no args 构造函数。

我这样做主要是为了强制所有成员的显式值,因为没有有效的默认值并且所有成员都必须具有有效值。

在 C++ 中这很容易,添加一个私有构造函数,但 C# 不允许这样做。

有没有办法防止上述情况?

我真的需要强制使用工厂,这样防止所有公共构造函数调用也能正常工作。


完全披露者:为了避免单声道依赖,c# 应用程序被自动翻译为 D ,其中new Struct()产生了一个指针,这对我来说是个麻烦事。然而,尽管如此,这个问题还是相关的,所以请忽略它。

0 投票
4 回答
582 浏览

c - C 指针混淆

我想在内存中存储一​​个字符串并稍后读取:

尽管 B 行和 D 行显示相同的地址,但 C 行中的 printf 因分段错误而失败。我错过了什么?

任何帮助将不胜感激!

0 投票
16 回答
375755 浏览

c - 结构和联合之间的区别

有什么好的例子可以说明 astruct和 a之间的区别union吗?基本上我知道它struct使用了其成员的所有内存并union使用了最大的成员内存空间。还有其他操作系统级别的差异吗?

0 投票
5 回答
2937 浏览

c# - C# - 如何确保我的所有结构都已初始化?

我正在用 C# 编写一个应用程序,它将进行大量计算。一切都围绕着基本结构——价值。它基本上是双倍的,带有一些额外的参数(精度等)。它必须是一个结构,因为会创建太多的结构来提供堆分配。现在,我需要确保它们都已正确初始化。我不能声明默认的显式构造函数,尽管我提供了默认构造函数,它用 0 初始化所有内容,这在我的域中没有意义。

如果不使用参数调用我的构造函数,就无法拒绝创建实例......?

基本上我需要的是通过这个测试:

如果没有显式调用构造函数并且仍然访问结构,则抛出异常是可以的,但是检查所有时间将花费太多时间。

我现在几乎失去了希望,请帮助!

0 投票
4 回答
37119 浏览

c - 如何使用指向 C 中结构指针的指针?

我想在双指针下更改结构的成员。你知不知道怎么?

示例代码

0 投票
3 回答
870 浏览

c - 用于记录 C 结构的程序?

如果您有一个被描述为 C 结构的二进制文件格式(或数据包格式),是否有任何程序可以解析该结构并将其转换为您的协议的整洁文档?

该结构当然会包含数组、其他结构等,这是描述格式所必需的。文档可能需要包括打包、字节顺序等内容。

0 投票
4 回答
1077 浏览

c - 正确的内存分配

我有以下结构:

但我不知道如何为此分配内存。我试过:

为了为 101 个条目创建一个哈希表,但它不起作用!谁能帮我?我真的很感激!

0 投票
7 回答
36116 浏览

python - 如何遍历和搜索 python 字典?

我有嵌套字典:

给定一个id - 之一。 导航到正确字典的最简单方法是什么?ids41304130-2-2

如果给定id的是,4130-2-1那么它应该到达字典key=key5

请不要使用 XML 方法。

编辑(1):嵌套在1级别之间4,但我在解析之前知道嵌套。

编辑(2):修复了代码。

编辑(3):再次修复了字符串值的代码ids。请原谅造成的混乱。我希望这是最终的:)