Re: Как уникально идентифицировать объекты
От: Hike  
Дата: 17.12.07 15:57
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Есть некая система в которой есть группы некоторых объектов. Объекты внутри каждой группы должны уникально идентифицироваться (по крайней мере в пределах этой группы). Причем лучше (удобней и красивей) если это будет происходить автоматически, без участия пользователя этой системы.


А>Пробовал такой подход:

А>
А>public SomeObject()
А>{
А>...
А>   this.key = DataTime.Now.Ticks.ToString();
А>...
А>}
А>


А>Но эта фишка, как оказалось, не делает того что нужно — при создании подря нескольких объектов, их поле key инициализируется один и тем же значением. Что, как упоминалось выше, неприемлемо.


А>Какие здесь возможны подходы?


Можно сделать и так:


public class UniqueBase
{
private static long counter_;
private readonly long _id;

private static long CreateId()
{
return System.Threading.Interlocked.Add(ref counter_, 1);
}

protected UniqueBase()
{
_id = CreateId();
}

public long ID
{
get { return _id;}
}
}

public sealed class Foo : UniqueBase
{
public override string ToString()
{
return ID.ToString();
}
}

Наследуешься от UniqueBase и при создании нового экземпляра будет гарантированно уникальное число (я думаю что диапазона long должно хватить).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.