Tag: new operator

C#/ .Net中“新”属性的优缺点?

考虑以下示例代码: // delivery strategies public abstract class DeliveryStrategy { … } public class ParcelDelivery : DeliveryStrategy { … } public class ShippingContainer : DeliveryStrategy { … } 和以下示例Order类: // order (base) class public abstract class Order { private DeliveryStrategy delivery; protected Order(DeliveryStrategy delivery) { this.delivery = delivery; } public DeliveryStrategy Delivery { get { return […]

C#中“新”的性能成本?

在C#中,使用new关键字的性能成本是多少? 我特别提到了与游戏开发有关的问题,我知道在C ++中,每个更新周期都是新手,这是一个明确的禁忌。 这同样适用于C#吗? 我正在使用XNA并开发移动设备。 只是真的问一个优化问题。

在C#中的界面内使用时,’new’关键字的含义是什么?

开发一个通用的接口我希望在一个接口中声明一个构造函数,但它说那里禁止构造函数。 我试图声明一个静态工厂方法,但它说不允许使用静态方法,并建议使用’new’关键字。 但我几乎不知道在C#中使用界面时,’new’关键字究竟意味着什么。 你呢? 更新: 我没有发布任何示例代码,因为我不想混合2个问题 – 如何在界面中指定构造函数/工厂以及’new’关键字在接口中的含义。 II甚至只被强制指定第一部分因为StackOverflow不接受纯粹forms的第二个问题,说它不符合质量标准。 但是,正如你所要求的那样,我将对我试图实现的目标进行抽样: Interface IMyInterface { IMyInterface (T, U, U); // OR static IMyInterface GetNewIMyInterface (T, U, U); } 我只是希望每个派生类都实现这样的构造函数。

我能否检测到我是否已将新对象作为参数?

精简版 对于那些没有时间阅读我对以下问题的推理的人: 有没有办法为方法的参数强制实施“仅新对象”或“仅现有对象”的策略 ? 长版 有很多方法将对象作为参数,并且方法是否具有对象“all to their”并不重要。 例如: var people = new List(); Person bob = new Person(“Bob”); people.Add(bob); people.Add(new Person(“Larry”)); 这里List.Add方法采用了“现有” Person (Bob)以及“new” Person (Larry),该列表包含两个项目。 Bob可以作为bob或people[0] 。 拉里可以作为people[1]访问,如果需要,可以随后缓存和访问larry (或其他)。 好的。 但有时一个方法确实不应该传递给新对象。 以Array.Sort为例。 以下内容并没有多大意义: Array.Sort(new int[] {5, 6, 3, 7, 2, 1}); 所有上面的代码都是采用一个新数组,对它进行排序,然后忘记它(因为它的引用计数在Array.Sort退出后达到零,因此排序的数组将被垃圾收集,如果我没有记错的话) 。 因此Array.Sort 期望 “现有”数组作为其参数。 可以想象其他方法可能期望 “新”对象(尽管我通常认为这样的期望会是设计错误)。 一个不完美的例子是: DataTable firstTable = myDataSet.Tables[“FirstTable”]; […]

阴影(VB.NET)和新(C#)之间的区别

简单的问题来自一个简单的问题:VB.NET中的Shadows关键字和C#中的New关键字有什么区别? (关于当然的方法签名)。

有关Virtual / new …以及接口的更多信息!

昨天我发布了一个关于new / virtual / override关键字的问题,我从你的答案中学到了很多东西。 但我仍有一些疑虑。 在所有“盒子”之间,我与类型的方法表中真正发生的事情失去联系。 例如: interface I1 { void Draw(); } interface I2 { void Draw(); } class A : I1, I2 { public void Minstance() { Console.WriteLine(“A::MInstance”); } public virtual void Draw() { Console.WriteLine(“A::Draw”); } void I2.Draw() { Console.WriteLine(“A::I2.Draw”); } } class B : A, I1, I2 { public new virtual […]

使用new来初始化c#数组与使用literal初始化

简单简短问题究竟有什么区别 int[] intarray = new int[2]{1,2}; 和 int[] intarray2 = {4,5,6}; 就像“新”究竟做什么一样? 你真的需要它吗? 我猜它只是分配内存…..或什么? 对不起,我对C#全新,并且在我学习它时会有疑问。

对象之间的区别a = new Dog()vs Dog a = new Dog()

object a = new Dog(); VS Dog a = new Dog(); 在这两种情况下, a.GetType()给出了Dog 。 两者都调用相同的构造函数(具有相同的层次结构)。 那么请告诉我这两个陈述之间的区别?

对C#中的“覆盖”与“新”感到困惑

我有以下课程: class Base { public virtual void Print() { Console.WriteLine(“Base”); } } class Der1 : Base { public new virtual void Print() { Console.WriteLine(“Der1”); } } class Der2 : Der1 { public override void Print() { Console.WriteLine(“Der2”); } } 这是我的主要方法: Base b = new Der2(); Der1 d1 = new Der2(); Der2 d2 = new Der2(); […]

关于虚拟/新/覆盖的困惑

我对virtual / new / override事情有点困惑。 这是一个例子: class A { public virtual void mVVirtual() { Console.WriteLine(“A::mVVirtual”); } } class B : A { public virtual void mVVirtual() { Console.WriteLine(“B::mVVirtual”); } } class C : B { public override void mVVirtual() { Console.WriteLine(“C::mVVirtual”); } } class Test { static void Main() { B b1 = new C(); […]