相关疑难解决方法(0)

C#多线程无符号增量

我想从多个线程递增无符号整数.

我知道Interlocked.Increment,但它不处理无符号整数.我可以使用lock(),但出于性能原因我不愿意.

它只是以正常方式增加它的线程安全吗?如果偶尔的增量丢失也没关系,因为它只用于统计.我不想要的是腐败的价值.

c# multithreading unsigned interlocked-increment

15
推荐指数
2
解决办法
9239
查看次数

如何找出一个类创建了多少个对象

如何在C#中找出一个类创建了多少个对象?

c# object

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

BaseClass与实例计数器

我有一个基类和几个派生类(例如BaseChildA : Base).每次我创建一个ChildA类的实例时,我希望它被分配一个唯一的实例编号(类似于关系数据库中的自动增量ID,但对于我在内存中的类而不是在数据库中).

我的问题类似于这个问题,但有一个明显的区别:我希望基类自动处理这个问题.对于我的每个派生类(ChildA,ChildB,ChildC等),我希望基类保持单独的计数,并在创建该派生类的新实例时增加它.

所以,我Base班上的信息可能最终看起来像这样:

ChildA,5
ChildB,6
ChildC,9
Run Code Online (Sandbox Code Playgroud)

如果我然后实例化一个新的ChildB(var instance = new ChildB();),我希望ChildB被赋予id 7,因为它从6开始.

然后,如果我实例化一个新的ChildA,我希望ChildA被分配id 6.

-

我怎样才能在Base班级的构造函数中处理这个问题?

c#

5
推荐指数
1
解决办法
97
查看次数

计算结构创建的实例数

我正在寻找一种确定程序中创建的结构对象数量的方法。这是出于教育目的。

我在SO上找到了这个答案,它适用于以下类:https : //stackoverflow.com/a/12276687/363224。因此,我尝试使用进行类似的操作struct,但正如预期的那样,它并不起作用。

public struct Car
{
    public string brand;

    public static int ObjectsConstructed { get; private set; }

    public Car(string brand)
    {
        this.brand = brand;
        ObjectsConstructed++;
    }
}

...

Car car1 = new Car("VW");
Car car2 = car1; // How can we increment the ObjectsConstructed?
List<Car> carList = new List<Car>();
carList.Add(car1); // How can we increment the ObjectsConstructed?
Run Code Online (Sandbox Code Playgroud)

Car(string)构造不叫,因为结构对象的拷贝被称为某种的memcpy,并通过构造不走。结构也不允许显式的无参数构造函数。

如何使一种可以处理的副本构造函数呢?还是有其他方法可以通过反射将这些信息从运行时中取出?


编辑

我写了一个测试来说明我的意思:

// This test passes, firstCar and sameCar are not the …
Run Code Online (Sandbox Code Playgroud)

c# struct

5
推荐指数
0
解决办法
99
查看次数

计算类方法中类类型的对象数

如何在该类的方法中计算类类型的对象数?就此而言,如何在不在列表中添加对象的情况下在类之外执行此操作?

我应该想到这个!谢谢!我会在一段时间内没有回答,看看是否有更好的方法,因为我同意.我只是把头包裹在OO周围.如果你不介意让我解释一下,也许总的来说有更好的方法吗?

我有一个对象类,我想添加3条信息,但首先我要循环并确保没有其他对象与三个部分中的任何一个相同,如果有,为每个做不同的事情案件.

c# methods class object count

1
推荐指数
1
解决办法
2万
查看次数