У меня есть структура, которая используется временным образом и выглядит примерно так:
internal readonly struct TrackingId
{
public readonly string Source1;
public readonly string Source2;
public readonly string SourceN;
// Computed from Source1..N
public readonly string Value;
private TrackingId(string source1, string source2, string sourceN)
{
Source1 = source1;
Source2 = source2;
SourceN = sourceN;
Value = String.Join("-", Source1, Source2, SourceN);
}
public static TrackingId Create(string source1, string source2, string sourceN)
{
return new TrackingId(source1, source2, sourceN);
}
}
Фактический тип имеет много полей, поэтому выполнение копирования является очень нежелательным поведением.Тем не менее, я понимаю, что среда выполнения будет копировать новый экземпляр вызывающей стороне, если / пока он не решит встроить метод Create
, который не гарантируется.
По сути, я ищу что-то подобноек разрешению копирования C ++, в котором возвращаемый объект создается на месте в хранилище вызывающего;есть ли способ надежно предотвратить копирование методом Create
?