You will be surprised how much structs appear to be like classes at first sight.
A struct is declared in the code below to represent a person's name. This is done using the struct keyword.
1: using System;
2:
3: struct Name {
4: private string FirstName;
5: private string LastName;
6:
7: public string GetName(){
8: return FirstName + " " + LastName;
9: }
10:
11: // accessors and mutators
12: public string GetFirstName(){
13: return FirstName;
14: }
15: public void SetFirstName(string newFirstName){
16: FirstName = newFirstName;
17: }
18: public string GetLastName(){
19: return LastName;
20: }
21: public void SetLastName(string newLastName){
22: LastName = newLastName;
23: }
24: }
That's the Name struct. Now you can instantiate and use it.
25: class TestClass{ 26: public static void Main(){ 27: Name n = new Name(); 28: n.SetFirstName("Charlie"); 29: n.SetLastName("Brown"); 30: Console.WriteLine(n.GetName()); 31: } 32: }
Output:
c:expt>test Charlie Brown
On line 27, a new instance of the Name struct is created. On lines 28 – 30 its methods are invoked. [3]
[3] In this example, public accessor and mutator methods are used to access the private fields. Structs can also contain public properties instead.
Like classes:
structs can contain both function members [4] and data members [5] – they can be static or non-static;
[4] Function members are indexers, constructors, operators, properties, and any method. There is one exception here – a struct cannot have a destructor.
[5] Data members are read-only variables, constants, events, and fields.
structs can be declared with the following accessibility modifiers – public, protected, internal, and private with the same effect as classes;
structs can be hidden using the new modifier;
structs can implement one or more interfaces (though they cannot extend another class or another struct) – to make the Name struct implement the MyInterface interface, just declare the struct like this:
struct Name:MyInterface{ ... }
18.224.54.136