File: System\Diagnostics\Helpers.cs
Web Access
Project: src\src\libraries\System.Diagnostics.DiagnosticSource\src\System.Diagnostics.DiagnosticSource.csproj (System.Diagnostics.DiagnosticSource)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Collections.Generic;
using System.Globalization;
using System.Runtime.CompilerServices;
using System.Text;
 
namespace System.Diagnostics
{
    internal static class Helpers
    {
        internal static string FormatTags(IEnumerable<KeyValuePair<string, object?>>? tags)
        {
            if (tags is null)
            {
                return string.Empty;
            }
 
            StringBuilder sb = new StringBuilder();
            bool first = true;
            foreach (KeyValuePair<string, object?> tag in tags)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    sb.Append(',');
                }
 
                sb.Append(tag.Key).Append('=').Append(tag.Value);
            }
            return sb.ToString();
        }
 
        internal static string FormatTags(KeyValuePair<string, string>[] labels)
        {
            if (labels is null || labels.Length == 0)
            {
                return string.Empty;
            }
 
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < labels.Length; i++)
            {
                sb.Append(labels[i].Key).Append('=').Append(labels[i].Value);
                if (i != labels.Length - 1)
                {
                    sb.Append(',');
                }
            }
            return sb.ToString();
        }
 
        internal static string FormatObjectHash(object? obj) =>
            obj is null ? string.Empty : RuntimeHelpers.GetHashCode(obj).ToString(CultureInfo.InvariantCulture);
    }
}