using static System.Console;
using System.Diagnostics;
public static void Main() {
var enumera = new DateTimeKind[] {DateTimeKind.Local, DateTimeKind.Unspecified, DateTimeKind.Utc};
var tempo = new Stopwatch();
for (var i = 1; i < 10000; i++) {
ToSeparatedCommaString<DateTimeKind>(enumera);
WriteLine(tempo.ElapsedTicks);
for (var i = 1; i < 10000; i++) {
ToSeparatedCommaString2<DateTimeKind>(enumera);
WriteLine(tempo.ElapsedTicks);
public static string ToSeparatedCommaString<T>(T[] enums)
where T : struct, IComparable, IFormattable, IConvertible {
var commaString = string.Empty;
throw new ArgumentException("Tipo de enums é inválido");
foreach (var item in enums) {
Enum enumerador = item as Enum;
commaString += enumerador.GetStringValue() + ",";
return commaString.TrimEnd(',');
public static string ToSeparatedCommaString2<T>(T[] enums)
where T : struct, IComparable, IFormattable, IConvertible {
var commaString = string.Empty;
throw new ArgumentException("Tipo de enums é inválido");
foreach (var item in enums) {
commaString += ((Enum)(object)item).GetStringValue() + ",";
return commaString.TrimEnd(',');
public static class EnumExt {
public static string GetStringValue(this Enum value) {