Click here to Skip to main content
15,886,362 members
Home / Discussions / C#
   

C#

 
GeneralRe: About records Pin
BillWoodruff4-Jan-22 4:49
professionalBillWoodruff4-Jan-22 4:49 
AnswerRe: About records Pin
Richard Deeming3-Jan-22 23:14
mveRichard Deeming3-Jan-22 23:14 
GeneralRe: About records Pin
Super Lloyd3-Jan-22 23:17
Super Lloyd3-Jan-22 23:17 
AnswerRe: About records Pin
BillWoodruff4-Jan-22 5:38
professionalBillWoodruff4-Jan-22 5:38 
GeneralRe: About records Pin
Super Lloyd4-Jan-22 5:49
Super Lloyd4-Jan-22 5:49 
AnswerRe: About records Pin
endo funk7-Jan-22 1:55
endo funk7-Jan-22 1:55 
GeneralRe: About records Pin
Super Lloyd7-Jan-22 8:49
Super Lloyd7-Jan-22 8:49 
GeneralRe: About records Pin
endo funk7-Jan-22 10:39
endo funk7-Jan-22 10:39 
Not quite...

In its simplest syntactic form i.e. positional syntax; records are immutable by default, for example:
C#
record User(int Id, string LastName);

However where you are correct, is that records defined with nominal creation syntax are mutable as a default, for example:
C#
public record User {
  public int Id { get; set; }
  public string LastName { get; set; }
}

To stay competitive with other languages e.g. Swift, Microsoft have included additional syntactical flexibility to, e.g. control immutability at a field level, for example:
C#
public record User {
  public int Id { get; init; } // immutable field, post init.
  public string LastName { get; set; }
}

However, the reason for records according to Microsoft is as follows;:
While records can be mutable, they're primarily intended for supporting immutable data models.

C# 10; again brings more syntactic flexibility around records, e.g. the addition of:
C#
// code generation creates the record as a struct, which has mutable fields
record struct ... 

/// ...and...

readonly record struct ... 
// code generation creates the record as an immutable struct, similar to record using positional syntax.

Functional programmers will as a default lean on positional syntax; because its both shorter and guarantees immutability, and is quite similar to other functional languages. Whereas the OOP programmer would be more familiar with the nominal syntax and its behavior.

As for with; its purpose is to provide a non destructive way to do mutation; or stated differently; provide a simplified syntactic solution to create a new copy of a data structure; where some of the field values are changed in process; without of course harming the integrity of the source data structure.

modified 7-Jan-22 16:53pm.

QuestionBlazor: IEnumerable ElementAt Pin
chrisb15162-Jan-22 23:49
chrisb15162-Jan-22 23:49 
AnswerRe: Blazor: IEnumerable ElementAt Pin
#realJSOP3-Jan-22 2:16
mve#realJSOP3-Jan-22 2:16 
GeneralRe: Blazor: IEnumerable ElementAt Pin
chrisb15163-Jan-22 10:11
chrisb15163-Jan-22 10:11 
GeneralRe: Blazor: IEnumerable ElementAt Pin
#realJSOP3-Jan-22 22:39
mve#realJSOP3-Jan-22 22:39 
AnswerRe: Blazor: IEnumerable ElementAt Pin
OriginalGriff3-Jan-22 2:23
mveOriginalGriff3-Jan-22 2:23 
AnswerRe: Blazor: IEnumerable ElementAt Pin
Gerry Schmitz3-Jan-22 5:51
mveGerry Schmitz3-Jan-22 5:51 
GeneralRe: Blazor: IEnumerable ElementAt Pin
OriginalGriff3-Jan-22 6:28
mveOriginalGriff3-Jan-22 6:28 
Questioncausing the computer to freeze Pin
Calin Negru2-Jan-22 4:01
Calin Negru2-Jan-22 4:01 
AnswerRe: causing the computer to freeze Pin
Gerry Schmitz2-Jan-22 4:42
mveGerry Schmitz2-Jan-22 4:42 
GeneralRe: causing the computer to freeze Pin
Calin Negru3-Jan-22 8:11
Calin Negru3-Jan-22 8:11 
AnswerRe: causing the computer to freeze Pin
OriginalGriff2-Jan-22 6:29
mveOriginalGriff2-Jan-22 6:29 
GeneralRe: causing the computer to freeze Pin
Calin Negru3-Jan-22 6:13
Calin Negru3-Jan-22 6:13 
GeneralRe: causing the computer to freeze Pin
OriginalGriff3-Jan-22 6:45
mveOriginalGriff3-Jan-22 6:45 
AnswerRe: causing the computer to freeze Pin
#realJSOP2-Jan-22 23:53
mve#realJSOP2-Jan-22 23:53 
AnswerRe: causing the computer to freeze Pin
0x01AA5-Jan-22 4:40
mve0x01AA5-Jan-22 4:40 
QuestionAsync/Await Questions Pin
Kevin Marois30-Dec-21 7:35
professionalKevin Marois30-Dec-21 7:35 
AnswerRe: Async/Await Questions Pin
Gerry Schmitz30-Dec-21 18:43
mveGerry Schmitz30-Dec-21 18:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.