можно сделать более оптимизированно, если не аллоцировать для полей новые строки, а использовать IReadOnlySpan. Вот минимальный пример:
var input = "John Stockman|+17651233243";
var record = new Record(input);
Console.WriteLine($"Name: {record.Name} Phone: {record.Phone}");
class Record
{
private string line;
private int delimeterIndex;
public Record(string line)
{
this.line = line;
delimeterIndex = line.IndexOf('|');
}
public ReadOnlySpan<char> Name => line.AsSpan(0, delimeterIndex);
public ReadOnlySpan<char> Phone => line.AsSpan(delimeterIndex + 1, line.Length - 1 - delimeterIndex);
public override string ToString() => line;
}