相关疑难解决方法(0)

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

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

我知道拳击和拆箱是什么,但我无法理解它的实际用途.我应该在哪里以及在哪里使用它?

short s = 25;

object objshort = s;  //Boxing

short anothershort = (short)objshort;  //Unboxing
Run Code Online (Sandbox Code Playgroud)

.net c# boxing

307
推荐指数
6
解决办法
13万
查看次数

装箱/拆箱和铸造有什么区别?

装箱/拆箱和铸造有什么区别?

通常,这些术语似乎可以互换使用.

.net boxing unboxing casting

67
推荐指数
4
解决办法
4万
查看次数

是一个拳击转换接口?

我有一个IEntity接口

public interface IEntity{
    bool Validate();
}
Run Code Online (Sandbox Code Playgroud)

我有一个实现此接口的类Employee

public class Employee : IEntity{
    public bool Validate(){ return true; }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我有以下代码

Employee emp1 = new Employee();
IEntity ent1 = (IEntity)emp1; // Is this a boxing conversion?
Run Code Online (Sandbox Code Playgroud)

如果它不是拳击转换那么演员是如何工作的?

c# oop boxing

13
推荐指数
3
解决办法
2701
查看次数

什么是铸造参数的成本

当使用MVVM和Prism时,我发现自己进行了大量的转换,因为大多数参数都是接口

防爆

  public void AddCrSubSystemsToPlant(IPlantItem plantItm, CRArticleItem crItm)
        {

            OSiteSubSystem itm = (OSiteSubSystem)crItm;
            itm.PartData.Order = ((OSiteEquipment)plantItm).SubSystems.Count() + 1;

            ((OSiteEquipment)plantItm).SubSystems.Add(itm);

        }
Run Code Online (Sandbox Code Playgroud)

要么

  public void DeletePart(IPlantItem plantItem)
        {
            IEnumerable<IPlantItem> itmParent = GetParentPartByObjectId(_siteDocument, plantItem);

            if (plantItem is OSiteEquipment)
            ((ObservableCollection<OSiteEquipment>)itmParent).Remove((OSiteEquipment)plantItem);

            if (plantItem is OSiteSubSystem)
                ((ObservableCollection<OSiteSubSystem>)itmParent).Remove((OSiteSubSystem)plantItem);

            if (plantItem is OSiteComponent)
                ((ObservableCollection<OSiteComponent>)itmParent).Remove((OSiteComponent)plantItem);
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是,涉及的费用是多少.如果避免,这些操作是否会耗费大量内存或CPU.

任何意见?

c# casting

7
推荐指数
1
解决办法
375
查看次数

标签 统计

boxing ×3

c# ×3

.net ×2

casting ×2

oop ×1

unboxing ×1