# Classes और Records — .NET Core: वेब API बनाएँ, टेस्ट करें और शिप करें

Source: https://www.geekswithgeeks.com/hi/dotnet-core/cs-classes-records

> Classes और immutable records से डेटा मॉडल करें और उनकी सही तुलना करें।

## Class या record?

`class` डिफ़ॉल्ट रूप से reference से तुलना करता है। `record` value से तुलना करता है और `with` copies व पढ़ने लायक `ToString()` देता है। API के request/response जैसे सादे डेटा के लिए records इस्तेमाल करें।

## Record का उपयोग

बराबर values वाले दो records बराबर होते हैं। `with` बदली हुई copy बनाता है और मूल को नहीं छूता।

```csharp
public record Product(int Id, string Name, decimal Price);

var a = new Product(1, "Pen", 10m);
var b = new Product(1, "Pen", 10m);
Console.WriteLine(a == b);
var c = a with { Price = 12m };
Console.WriteLine(c);
```

Output:

```
True
Product { Id = 1, Name = Pen, Price = 12 }
```

## चेक बनाम पता

Classes को reference से तुलना करना ऐसा है जैसे पूछना कि दो लोग एक ही पते पर रहते हैं या नहीं। Records को value से तुलना करना ऐसा है जैसे पूछना कि दो चेक पर राशि और नाम एक ही है या नहीं।

**Quiz:** Record की बदली हुई copy कौन-सा keyword बनाता है?

- [ ] copy
- [x] with
- [ ] clone
- [ ] new

*Answer:* with. `with { ... }` बताए गए properties बदलकर नया record बनाता है।
