Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Get Set vs Without Get Set [duplicate]

Tags:

c#

set

get

I have looked at at least 10 SO questions on get/set but cannot find mine. So I hope this is not a duplicate.

public class myint
{
    public int value{get;set;}
}

vs

public class myint
{
    public int value;
}

The above 2 codes look the same to me. If I want to use the myint class, I just write the code below and it can run on either class.

myint A;
A.value=10;

So what is the get/set use for?

like image 718
user3398315 Avatar asked Mar 19 '14 05:03

user3398315


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.

Is C language easy?

Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.

What is C language?

C is an imperative procedural language supporting structured programming, lexical variable scope, and recursion, with a static type system. It was designed to be compiled to provide low-level access to memory and language constructs that map efficiently to machine instructions, all with minimal runtime support.


2 Answers

You're asking what the difference is between using a public instance variable vs. getter/setter properties I assume.

Properties allow you to further encapsulate logic around getting or setting a variable, for example adding simple validation logic. You could throw an exception if someone sets your value to less than zero for example. You could also add further logic in the getter/setter to for example synchronize a specific field.

A few other differences:

  • Properties can be used for data binding easily in most .NET UI frameworks.
  • Reflection works differently.
  • Differing access levels for get/set vs. for example your instance variable you can choose between readonly, private, protected, static, etc. as a whole.
  • There is more overhead accessing a property. This is usually unimportant in most use cases other than games and highly performance sensitive situations.
like image 175
therewillbesnacks Avatar answered Oct 30 '22 21:10

therewillbesnacks


http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx

A property is a member that provides a flexible mechanism to read, write, or compute the value of a private field. Properties can be used as if they are public data members, but they are actually special methods called accessors. This enables data to be accessed easily and still helps promote the safety and flexibility of methods.

Here are few things off the top of my head that differentiate a public {get;set;} vs a public member variable:

  1. Properties are needed for data binding.
  2. get and set can have different accessors (e.g. public int Value {get; protected set;}
  3. get;set; can be part of a interface e.g. interface IHasValueGetter { public int Value {get;}}

What is the difference between a Field and a Property in C#?

like image 20
DeveloperGuo Avatar answered Oct 30 '22 20:10

DeveloperGuo