Дана строка:
42|john@example.com|127
Нужно распарсить её без Split(), Regex и временных string:
public readonly record struct UserLog(
int Id,
ReadOnlyMemory<char> Email,
int Latency
);
Реализуйте:
static bool TryParse(
ReadOnlyMemory<char> input,
out UserLog result
)
Требования:
• парсинг через Span<char>
• false при битом формате
• без лишних аллокаций
• Email должен ссылаться на исходный buffer
Пример:
var input = "42|john@example.com|127".AsMemory();
if (TryParse(input, out var log))
{
Console.WriteLine(log.Id); // 42
Console.WriteLine(log.Email); // john@example.com
Console.WriteLine(log.Latency); // 127
}
Вопрос:
почему нельзя сохранить ReadOnlySpan<char> в UserLog, а ReadOnlyMemory<char> можно?