Academic Tutorials



English | French | Portugese | German | Italian
Google

Home Source Codes E-Books Downloads Contact Us About Us

C# : C Sharp
Introduction to .NET
An Introduction To The .NET Framework
System Requirements
Application Types in C#
To Begin With C# Programming
.NET Type
Predefined Reference Types
Data types in C# and .NET
Classes and Object Model in .NET
Property in C# class
Arrays
Method Overloading
C# Tutorial Namespaces
Interfaces
Delegates in C#
Events in C#
Reflection
Exception Handling

HTML Tutorials
HTML Tutorial
XHTML Tutorial
CSS Tutorial
TCP/IP Tutorial
XML Tutorials
XML Tutorial
XSL Tutorial
XSLT Tutorial
DTD Tutorial
Schema Tutorial
XForms Tutorial
XSL-FO Tutorial
XML DOM Tutorial
XLink Tutorial
XQuery Tutorial
XPath Tutorial
XPointer Tutorial
RDF Tutorial
SOAP Tutorial
WSDL Tutorial
RSS Tutorial
WAP Tutorial
Web Services Tutorial
Browser Scripting
JavaScript Tutorial
VBScript Tutorial
AJAX Tutorial
DHTML Tutorial
HTML DOM Tutorial
WMLScript Tutorial
E4X Tutorial
Server Scripting
ASP Tutorial
PHP Tutorial
PERL Tutorial
SQL Tutorial
ADO Tutorial
.NET (dotnet)
Microsoft.Net
XML Web Services
ASP.Net
.Net Mobile
C# : C Sharp
ADO.NET
VB.NET
Multimedia
SVG Tutorial
Flash Tutorial
Media Tutorial
SMIL Tutorial
Web Building
Web Browsers
Web Hosting
W3C Tutorial
Web Building
Web Quality
Web Semantic
Web Careers
Java Tutorials
Java Tutorial
JSP Tutorial
Servlets Tutorial
Struts Tutorial
EJB Tutorial
JMS Tutorial
JMX Tutorial
Programming Langauges
C Tutorial
C++ Tutorial
Visual Basic Tutorial
Data Structures Using C
Soft Skills
Communication Skills
Time Management
Project Management
Team Work
Leadership Skills
Corporate Communication
Negotiation Skills


Property in C# class

Previous Next



Property in C# class

How do we access member variables of any class from outside the class? In most of the languages including C++, we will make the member variables public so that we can create an instance of the class and directly access the public fields, as shown below:

using System;
class Hello
{
static void Main () {
Console.WriteLine("hello, world");
}
}

The above class has one public field: color. We may access this field from outside the class as shown below:

Car car = new Car ();

car. Color = "red";
string color = car.color;

But this is the old way ! This would still work with C#, but the suggested approach is to use "Property" instead of directly accessing member variables.
The following code snippet shows how to create "Property" in a class.

public class Car
{
// private fields.
private string color;

// constructor
public Car()
{
}

public string Color
{
get
{
return color; // return the value from privte field.
}
set
{
color = value; // save value into private field.
}
}
}

The above class has one private field - color. Then we have one "Property" called 'Color', which is used to represent the private field. Note that the field is private and the Property is public. (We have used the same name with upper/lower case to represent the 'Property' and 'field', but we may give any name we want.)

Each property has two parts:

  • get
  • set

  • The get part is executed when we access the value of the Property as shown below:

    Car car = new Car();

    string color = car.Color;

    When executed, the above get accessor will return the value stored in the field 'color'. The set part is executed when we assign a value to the Property as shown below:

    Car car = new Car();

    car.Color = "RED";

    When executed, the above set accessor will assign the value "RED" to the private field 'color'. (Note that 'value' is a keyword, which will have the value assigned to it.)




    So, what is the difference ?

    On the first look, there is no difference! We can achieve the same behaviour by writing 2 different methods ( like SetColor(...), GetColor() ).

    First advantage of using property is, code looks cleaner than having 2 separate methods. We can simply call a property as if it was a field in the class.

    Well, then we may ask why make it 2 methods, we can make it a public field, so that we can access it by creating an instance of the class.

    The main advantage over using a Property instead of a public field is, with the property, we will get a chance to write few lines of code (if we want) in the get and set accessors. So, we can perform some validation or any other logic before returning any values or assigning to the private field. See the modified class below:

    public class Car
    {
    // private fields.
    private string color;

    // constructor
    public Car()
    {
    }

    public string Color
    {
    get
    {
    if ( color == "" )
    return "GREEN";
    else
    return color;
    }
    set
    {
    if ( value == "" )
    thrown new Exception ("Wrong value.");
    else
    color = value;
    }
    }
    }

    Let us analyze the get part first. Here we are checking whether there is a valid value in the field 'color' before we return the value. If it is empty, we are getting a chance to return a default value 'Green'. This way, we can make sure that whoever calls the property 'Color' will always get a valid color, never an empty string.

    In the set part, we are doing a validation to make sure we always assign a a valid value to our field. If someone assign an empty string to the 'Color' property, he will get an exception (error).

    Car car = new Car();

    car.Color = "";

    The above code will throw an error because we are trying to assign an empty string and the set accessor will throw an error if it an empty string. This way, we can make sure that we allow only valid values to be assigned.

    So, i guess now you would appreciate the purpose of "Property". So, no more public fields! Always have private fields and write public properties as wrapper for them if required to expose them to outside the class.




    Share And Enjoy:These icons link to social bookmarking sites where readers can share and discover new web pages.
    • blinkbits
    • BlinkList
    • blogmarks
    • co.mments
    • connotea
    • del.icio.us
    • De.lirio.us
    • digg
    • Fark
    • feedmelinks
    • Furl
    • LinkaGoGo
    • Ma.gnolia
    • NewsVine
    • Netvouz
    • RawSugar
    • Reddit
    • scuttle
    • Shadows
    • Simpy
    • Smarking
    • Spurl
    • TailRank
    • Wists
    • YahooMyWeb

    Previous Next

    Keywords Property in C# class, c# xml, c# c++, c# net, c# textbox, c# dotnet, vb c#, c# example, convert c#, c# control, asp c#, private property, c# form, csharp c#, custom c#, c# application, c# sample, add c#, use c#, properties property, c# data, c# create,


    HTML Quizes
    HTML Quiz
    XHTML Quiz
    CSS Quiz
    TCP/IP Quiz
    XML Quizes
    XML Quiz
    XSL Quiz
    XSLT Quiz
    DTD Quiz
    Schema Quiz
    XForms Quiz
    XSL-FO Quiz
    XML DOM Quiz
    XLink Quiz
    XQuery Quiz
    XPath Quiz
    XPointer Quiz
    RDF Quiz
    SOAP Quiz
    WSDL Quiz
    RSS Quiz
    WAP Quiz
    Web Services Quiz
    Browser Scripting Quizes
    JavaScript Quiz
    VBScript Quiz
    AJAX Quiz
    DHTML Quiz
    HTML DOM Quiz
    WMLScript Quiz
    E4X Quiz
    Server Scripting Quizes
    ASP Quiz
    PHP Quiz
    PERL Quiz
    SQL Quiz
    ADO Quiz
    .NET (dotnet) Quizes
    Microsoft.Net Quiz
    XML Web Services Quiz
    ASP.Net Quiz
    .Net Mobile Quiz
    C# : C Sharp Quiz
    ADO.NET Quiz
    VB.NET Quiz
    Multimedia Quizes
    SVG Quiz
    Flash Quiz
    Media Quiz
    SMIL Quiz
    Web Building  Quizes
    Web Browsers Quiz
    Web Hosting Quiz
    W3C Quiz
    Web Building Quiz
    Web Quality Quiz
    Web Semantic Quiz
    Web Careers Quiz
    Java Quizes
    Java Quiz
    JSP Quiz
    Servlets Quiz
    Struts Quiz
    EJB Quiz
    JMS Quiz
    JMX Quiz
    Programming Langauges Quizes
    C Quiz
    C++ Quiz
    Visual Basic Quiz
    Data Structures Using C Quiz
    Soft Skills Quizes
    Communication Skills Quiz
    Time Management Quiz
    Project Management Quiz
    Team Work Quiz
    Leadership Skills Quiz
    Corporate Communication Quiz
    Negotiation Skills Quiz

    Privacy Policy
    Copyright © 2003-2008 Vyom Technosoft Pvt. Ltd., All Rights Reserved.