How to Generate UUID in C#
C# uses the term GUID (Globally Unique Identifier) instead of UUID. The System.Guid struct provides built-in support for generating RFC 4122 compliant unique identifiers.
1. Generate New GUID
Guid.NewGuid() generates a random GUID (equivalent to UUID v4), which is the most commonly used method.
using System;
class Program
{
static void Main()
{
// Generate a random GUID
Guid guid = Guid.NewGuid();
Console.WriteLine(guid);
// Output: 550e8400-e29b-41d4-a716-446655440000
// Get as string
string guidString = guid.ToString();
Console.WriteLine(guidString);
}
} 2. GUID Formatting Options
using System;
Guid guid = Guid.NewGuid();
// Default format with dashes (D)
Console.WriteLine(guid.ToString("D"));
// Output: 550e8400-e29b-41d4-a716-446655440000
// Without dashes (N)
Console.WriteLine(guid.ToString("N"));
// Output: 550e8400e29b41d4a716446655440000
// With braces (B)
Console.WriteLine(guid.ToString("B"));
// Output: {550e8400-e29b-41d4-a716-446655440000}
// With parentheses (P)
Console.WriteLine(guid.ToString("P"));
// Output: (550e8400-e29b-41d4-a716-446655440000)
// Hexadecimal (X)
Console.WriteLine(guid.ToString("X"));
// Output: {0x550e8400,0xe29b,0x41d4,{0xa7,0x16,0x44,0x66,0x55,0x44,0x00,0x00}}
// Uppercase
Console.WriteLine(guid.ToString("D").ToUpper());
// Output: 550E8400-E29B-41D4-A716-446655440000 3. Parse GUID from String
using System;
// Parse a GUID string
string guidString = "550e8400-e29b-41d4-a716-446655440000";
Guid guid = Guid.Parse(guidString);
Console.WriteLine(guid);
// TryParse for safe parsing
if (Guid.TryParse("550e8400-e29b-41d4-a716-446655440000", out Guid result))
{
Console.WriteLine($"Valid GUID: {result}");
}
else
{
Console.WriteLine("Invalid GUID format");
}
// Parse without dashes
Guid noDashes = Guid.Parse("550e8400e29b41d4a716446655440000"); 4. GUID Validation
using System;
public static class GuidValidator
{
public static bool IsValid(string value)
{
return Guid.TryParse(value, out _);
}
}
// Usage
Console.WriteLine(GuidValidator.IsValid("550e8400-e29b-41d4-a716-446655440000")); // True
Console.WriteLine(GuidValidator.IsValid("not-a-guid")); // False
Console.WriteLine(GuidValidator.IsValid(null)); // False 5. GUID in Entity Framework Core
using System;
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
public class User
{
[Key]
public Guid Id { get; set; }
public string Username { get; set; }
public DateTime CreatedAt { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.Property(u => u.Id)
.HasDefaultValueSql("NEWID()"); // SQL Server
// .HasDefaultValueSql("gen_random_uuid()"); // PostgreSQL
}
}
// Usage
var user = new User
{
Id = Guid.NewGuid(),
Username = "johndoe",
CreatedAt = DateTime.UtcNow
};
context.Users.Add(user);
await context.SaveChangesAsync(); 6. GUID in ASP.NET Core Web API
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpGet("{id:guid}")]
public IActionResult GetUser(Guid id)
{
// GUID automatically parsed from route
var user = _userService.GetById(id);
if (user == null)
return NotFound();
return Ok(user);
}
[HttpPost]
public IActionResult CreateUser([FromBody] CreateUserRequest request)
{
var user = new User
{
Id = Guid.NewGuid(),
Username = request.Username
};
_userService.Create(user);
return CreatedAtAction(nameof(GetUser), new { id = user.Id }, user);
}
} 7. Empty and Nil GUID
using System;
// Empty GUID (all zeros)
Guid empty = Guid.Empty;
Console.WriteLine(empty);
// Output: 00000000-0000-0000-0000-000000000000
// Check if GUID is empty
Guid guid = Guid.NewGuid();
if (guid == Guid.Empty)
{
Console.WriteLine("GUID is empty");
}
// Create from specific bytes
byte[] bytes = new byte[16];
Guid fromBytes = new Guid(bytes);
Console.WriteLine(fromBytes); // 00000000-0000-0000-0000-000000000000 8. Generate Multiple GUIDs
using System;
using System.Collections.Generic;
using System.Linq;
// Generate 10 GUIDs
List guids = Enumerable.Range(0, 10)
.Select(_ => Guid.NewGuid())
.ToList();
foreach (var guid in guids)
{
Console.WriteLine(guid);
}
// Or using a simple loop
var guidList = new List();
for (int i = 0; i < 10; i++)
{
guidList.Add(Guid.NewGuid());
} 9. GUID to Bytes and Back
using System;
Guid guid = Guid.NewGuid();
// Convert to byte array
byte[] bytes = guid.ToByteArray();
Console.WriteLine($"Bytes: {BitConverter.ToString(bytes)}");
// Convert back from bytes
Guid fromBytes = new Guid(bytes);
Console.WriteLine($"From bytes: {fromBytes}");
// Base64 encoding
string base64 = Convert.ToBase64String(bytes);
Console.WriteLine($"Base64: {base64}");
// Decode from Base64
byte[] decoded = Convert.FromBase64String(base64);
Guid fromBase64 = new Guid(decoded);
Console.WriteLine($"From Base64: {fromBase64}"); GUID Methods Reference
| Method | Description |
|---|---|
Guid.NewGuid() | Generate new random GUID |
Guid.Parse() | Parse GUID from string |
Guid.TryParse() | Safe parse with bool result |
Guid.Empty | Nil GUID (all zeros) |
guid.ToByteArray() | Convert to byte array |
Ready to use what you learned?
Try UUID Generator now