boxing相关内容

into_boxed_slice() 方法有什么用?

查看可用于 Vec 我偶然发现的方法 into_boxed_slice(self) ->盒子 String 也有这样的方法(into_boxed_str(self)).为 Vec/String 提供 Deref 的用处是允许将它们视为共享切片(&[T]) 是显而易见的,但我认为拥有的切片 (Box) 没有任何用处,也许 FFI 除外.Rust GitHub 存储 ..
发布时间:2022-01-24 20:37:00 其他开发

C# 中的泛型接口会防止装箱吗?(.NET 与 Mono 性能)

我有一个 C# 接口,其中某些方法参数声明为 object 类型.但是,传递的实际类型可能因实现接口的类而异: 公共接口IMyInterface{无效我的方法(对象 arg);}公共类 MyClass1 : IMyInterface{公共无效我的方法(对象 arg){我的对象 obj = (我的对象) arg;//用 obj 做一些事情...}}公共类 MyClass2 : IMyInterfa ..
发布时间:2022-01-23 14:45:09 C#/.NET

.NET Tuple 和 Equals 性能

这是我直到今天才注意到的.显然,.NET 实现的常用元组类(Tuple、Tuple 等)会导致 值类型 执行基于等式的操作时. 以下是该类在框架中的实现方式(来自 ILSpy): 公共类元组: IStructuralEquatable{公共 T1 项目 1 { 获取;私人套装;}公共 T2 项目 2 { 获取;私人套装;}公共元组(T1 item1,T2 item2){ ..
发布时间:2022-01-19 23:47:58 C#/.NET

装箱/拆箱和类型转换有什么区别?

装箱/拆箱和类型转换有什么区别? 通常,这些术语似乎可以互换使用. 解决方案 装箱是指将不可空值类型转换为引用类型或将值类型转换为它实现的某个接口(比如 int 到 IComparable).此外,底层值类型到可为空类型的转换也是一种装箱转换.(警告:关于这个主题的大多数讨论都会忽略后两种类型的转换.) 例如 int i = 5;对象 o = i; 将 i 转换为 obje ..
发布时间:2021-12-31 21:39:29 C#/.NET

泛型约束如何防止对具有隐式实现接口的值类型进行装箱?

我的问题与这个有点相关:显式实现的接口和通用约束. 然而,我的问题是编译器如何启用通用约束来消除对显式实现接口的值类型进行装箱的需要. 我想我的问题可以归结为两个部分: 在访问显式实现的接口成员时需要对值类型进行装箱的幕后 CLR 实现发生了什么,以及 删除此要求的通用约束会发生什么? 一些示例代码: 内部结构TestStruct:IEquatable{bool I ..
发布时间:2021-12-31 14:30:52 C#/.NET

通用枚举到int的C#非装箱转换?

给定一个通用参数 TEnum,它总是一个枚举类型,有没有办法在不装箱/拆箱的情况下从 TEnum 转换为 int? 请参阅此示例代码.这将不必要地装箱/拆箱该值. private int Foo(TEnum 值)where TEnum : struct//C# 不允许枚举约束{返回 (int) (ValueType) 值;} 上述 C# 是发布模式编译为以下 IL(注意装箱和拆箱操作码) ..
发布时间:2021-12-29 16:33:33 C#/.NET

为什么 Enum 的 HasFlag 方法需要装箱?

我正在阅读“通过 CLR 的 C#",在第 380 页上有一条说明如下: 注意 Enum 类定义了一个 HasFlag 方法,定义如下 public Boolean HasFlag(Enum flag); 使用此方法,您可以像这样重写对 Console.WriteLine 的调用: Console.WriteLine("Is {0} hidden? {1}", file, ..
发布时间:2021-12-29 16:31:40 C#/.NET

在 Java 8 中,是否有 ByteStream 类?

Java 8 为 double、int 和 long 提供了 Stream 特化:DoubleStream、IntStream 和 LongStream 分别.但是,我在 文档. Java 8 是否提供 ByteStream 类? 解决方案 不,它不存在.实际上,它并没有被明确实现,以免每个原始类型都有大量的类使 Stream API 变得混乱. 引用来自 Brian Goet ..
发布时间:2021-12-28 08:40:50 Java开发

为什么结构需要装箱?

在 C# 中,任何用户定义的 struct 自动是 System.Struct System.ValueType 和 System.Struct 的子类 System.ValueType 是 System.Object 的子类. 但是当我们将一些结构分配给对象类型引用时,它会被装箱.例如: 结构体A{公共国际我;}一个;对象 obj = a;//拳击发生在这里 所以我的问题是:如果 A ..
发布时间:2021-12-23 17:10:28 C#/.NET

结构、接口和装箱

可能的重复: 结构体实现接口是否安全? 拿这个代码: interface ISomeInterface{公共 int SomeProperty { 获取;}}struct SomeStruct : ISomeInterface{int someValue;公共 int SomeProperty { 获取 { 返回 someValue;} }公共 SomeStruct(int 值){som ..
发布时间:2021-12-23 16:53:58 C#/.NET

装箱和拆箱:什么时候出现?

所以我明白装箱和拆箱是什么.它什么时候出现在现实世界的代码中,或者在哪些例子中是一个问题?我无法想象做这样的事情: int i = 123;对象 o = i;//拳击int j = (int)o;//拆箱 ...但这几乎可以肯定是过于简单化了,我什至可能在之前不知道的情况下进行了装箱/拆箱. 解决方案 现在的问题比在泛型之前要少得多.现在,例如,我们可以使用: Listx = new ..
发布时间:2021-12-11 19:52:21 C#/.NET

Nullable 的装箱/拆箱行为如何?可能的?

今天早些时候我突然想到了一些让我挠头的事情. Nullable 类型的任何变量都可以分配给 null.例如: int?我 = 空; 起初,如果不以某种方式定义从 object 到 Nullable 的隐式转换,我不知道这怎么可能: public static 隐式操作符 Nullable(object box); 但是上面的操作符显然不存在,好像它存在一样,那么以下也必须是合法 ..
发布时间:2021-12-06 10:18:12 C#/.NET

为什么我们需要在 C# 中装箱和拆箱?

为什么我们需要在 C# 中装箱和拆箱? 我知道装箱和拆箱是什么,但我无法理解它的真正用途.为什么以及我应该在哪里使用它? short s = 25;对象 objshort = s;//拳击short anothershort = (short)objshort;//拆箱 解决方案 为什么 拥有统一的类型系统,并允许值类型对其底层数据的表示与引用类型表示其底层数据的方式完全不同 ..
发布时间:2021-12-02 14:01:59 C#/.NET