Click here to Skip to main content
15,890,741 members
Home / Discussions / C#
   

C#

 
GeneralRe: Creating token for a web service Pin
eso0o11-Apr-15 21:24
eso0o11-Apr-15 21:24 
GeneralRe: Creating token for a web service Pin
Sascha Lefèvre13-Apr-15 2:23
professionalSascha Lefèvre13-Apr-15 2:23 
QuestionEntity Data Model Pin
jkirkerx10-Apr-15 13:49
professionaljkirkerx10-Apr-15 13:49 
AnswerRe: Entity Data Model Pin
Dave Kreskowiak10-Apr-15 15:55
mveDave Kreskowiak10-Apr-15 15:55 
GeneralRe: Entity Data Model Pin
jkirkerx12-Apr-15 8:05
professionaljkirkerx12-Apr-15 8:05 
AnswerOk, How about this? Pin
jkirkerx12-Apr-15 13:55
professionaljkirkerx12-Apr-15 13:55 
QuestionChanging a Struct Property Value Pin
Kevin Marois10-Apr-15 11:01
professionalKevin Marois10-Apr-15 11:01 
AnswerRe: Changing a Struct Property Value PinPopular
harold aptroot10-Apr-15 12:31
harold aptroot10-Apr-15 12:31 
Coder For Hire wrote:
I'm not trying to change the struct, I'm try to change the departmentId.
That's the problem. You can change the struct, but assigning to its fields (no matter if it's with a property or not) would do nothing (and is banned because it is always a bug).

Remember that properties are just syntactic sugar for get and set methods. You can see this in effect in a decompiler (you may have to mess with settings). Using TheDepartment in a context where it is read from (as you do here) then you're really calling a get-method that returns it. So it's a copy. You're making a copy, calling a set-method on it, then the copy disappears and really nothing has happened at all (unless the properties have side effects). At least, that's what you would be doing if it wasn't an error to write this. That's a sort of unofficial way to look at it though, properties and methods do act differently, for example if you emulate a property using your own getter and setter then you wouldn't get this compile error (you'd get the useless behaviour I described above).

This "weird difference" between fields and properties also exists between elements of an array and indexers (in particular this means changing an array of structs to List<T> does not always work).

To quote the spec,
ECMA 334, §14.5.4 Member access:
... if E is a property or indexer access, then the value of the property or indexer access is obtained
(§14.1.1) and E is reclassified as a value.
This says that TheDepartment is a value, and
ECMA 334, §18.3.3 Assignment:
When a property or indexer of a struct is the target of an assignment, the instance expression associated with
the property or indexer access shall be classified as a variable. If the instance expression is classified as a
value, a compile-time error occurs. This is described in further detail in §14.14.1.
says that if the target of assignment is a property of a struct and the instance is a value, then it's an error. So, DepartmentId cannot be the target of assignment here.
AnswerRe: Changing a Struct Property Value Pin
OriginalGriff10-Apr-15 22:03
mveOriginalGriff10-Apr-15 22:03 
AnswerRe: Changing a Struct Property Value Pin
BillWoodruff10-Apr-15 22:53
professionalBillWoodruff10-Apr-15 22:53 
GeneralRe: Changing a Struct Property Value Pin
Richard Deeming13-Apr-15 1:31
mveRichard Deeming13-Apr-15 1:31 
GeneralRe: Changing a Struct Property Value Pin
BillWoodruff13-Apr-15 1:49
professionalBillWoodruff13-Apr-15 1:49 
GeneralRe: Changing a Struct Property Value Pin
Richard Deeming13-Apr-15 2:02
mveRichard Deeming13-Apr-15 2:02 
GeneralRe: Changing a Struct Property Value Pin
Kevin Marois13-Apr-15 3:06
professionalKevin Marois13-Apr-15 3:06 
GeneralRe: Changing a Struct Property Value Pin
Richard Deeming13-Apr-15 4:12
mveRichard Deeming13-Apr-15 4:12 
QuestionC# Memory Leak Question Pin
Kevin Marois10-Apr-15 10:45
professionalKevin Marois10-Apr-15 10:45 
AnswerRe: C# Memory Leak Question Pin
jschell10-Apr-15 11:36
jschell10-Apr-15 11:36 
GeneralRe: C# Memory Leak Question Pin
Kevin Marois13-Apr-15 3:13
professionalKevin Marois13-Apr-15 3:13 
QuestionEasy Way to Display Multilingual Tooltip and Message Box Pin
Felix Obere10-Apr-15 10:03
Felix Obere10-Apr-15 10:03 
Questionconvert piece of code from C++ to C# Pin
MrKBA10-Apr-15 8:25
MrKBA10-Apr-15 8:25 
AnswerRe: convert piece of code from C++ to C# Pin
RedDk12-Apr-15 16:49
RedDk12-Apr-15 16:49 
Questionsingle quote inside double quote in C# ASP.NET Pin
Rajeshkunwar2510-Apr-15 3:42
Rajeshkunwar2510-Apr-15 3:42 
AnswerRe: single quote inside double quote in C# ASP.NET Pin
OriginalGriff10-Apr-15 3:57
mveOriginalGriff10-Apr-15 3:57 
QuestionI can't get my splash screen to close Pin
jkirkerx9-Apr-15 11:00
professionaljkirkerx9-Apr-15 11:00 
AnswerRe: I can't get my splash screen to close Pin
Herman<T>.Instance9-Apr-15 23:54
Herman<T>.Instance9-Apr-15 23:54 

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.