Csharp/CSharp Tutorial/Class/Member Method

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Define methods

  1. Methods are subroutines that manipulate the data defined by the class and provide access to that data.
  2. Other parts of your program will interact with a class through its methods.
  3. The general form of a method is shown here:


<source lang="csharp">access ret-type name(parameter-list) {

   // body of method

}</source>

Define Rectangle class with method to compute the area

<source lang="csharp">using System;

class Rect {

 public int width; 
 public int height; 

 public Rect(int w, int h) { 
   width = w; 
   height = h; 
 } 

 public int area() { 
   return width * height; 
 } 

}

class UseRect {

 public static void Main() {   
   Rect r1 = new Rect(4, 5); 
   Rect r2 = new Rect(7, 9); 

   Console.WriteLine("Area of r1: " + r1.area()); 

   Console.WriteLine("Area of r2: " + r2.area()); 

 } 

}</source>

Area of r1: 20
Area of r2: 63

Member Functions

<source lang="csharp">using System; class Point {

   public Point(int x, int y)
   {
       this.x = x;
       this.y = y;
   }
   
   // accessor functions
   public int GetX() {
       return(x);
   }
   public int GetY() {
       return(y);
   }
   
   // variables now private
   int x;
   int y;

} class MainClass {

   public static void Main()
   {
       Point myPoint = new Point(10, 15);
       Console.WriteLine("myPoint.X {0}", myPoint.GetX());
       Console.WriteLine("myPoint.Y {0}", myPoint.GetY());
   }

}</source>

myPoint.X 10
myPoint.Y 15

Nested methods

<source lang="csharp">using System; class MainClass {

  static void MethodA(int par1, int par2)
  {
     Console.WriteLine("Enter MethodA: {0}, {1}", par1, par2);
     MethodB(11, 18);
     Console.WriteLine("Exit MethodA");
  }
  static void MethodB(int par1, int par2)
  {
     Console.WriteLine("Enter MethodB: {0}, {1}", par1, par2);
     Console.WriteLine("Exit MethodB");
  }
  static void Main()
  {
     MethodA(15, 30);
  }

}</source>

Enter MethodA: 15, 30
Enter MethodB: 11, 18
Exit MethodB
Exit MethodA

Object Class Methods

<source lang="csharp">using System; public class Product {

   public string make;
   public string model;
   public Product(string make, string model) {
       this.make = make;
       this.model = model;
   }
   public void Display() {
       Console.WriteLine("make = " + make);
       Console.WriteLine("model = " + model);
   }
   public static Product Copy(Product p) {
       return (Product)p.MemberwiseClone();
   }

} class MainClass {

   public static void Main() {
       Console.WriteLine("Creating Product objects");
       Product myProduct = new Product("Toyota", "MR2");
       Product myOtherProduct = new Product("Porsche", "Boxter");
       myProduct.Display();
       myOtherProduct.Display();
       Console.WriteLine("myProduct.ToString() = " + myProduct.ToString());
       Console.WriteLine("myProduct.GetType() = " + myProduct.GetType());
       Console.WriteLine("myProduct.GetHashCode() = " + myProduct.GetHashCode());
       Console.WriteLine("Product.Equals(myProduct, myOtherProduct) = " + Product.Equals(myProduct, myOtherProduct));
       Console.WriteLine("Product.ReferenceEquals(myProduct, myOtherProduct) = " + Product.ReferenceEquals(myProduct, myOtherProduct));
       myProduct = myOtherProduct;
       Console.WriteLine("Product.Equals(myProduct, myOtherProduct) = " + Product.Equals(myProduct, myOtherProduct));
       Console.WriteLine("Product.ReferenceEquals(myProduct, myOtherProduct) = " + Product.ReferenceEquals(myProduct, myOtherProduct));
       Product myOldProduct = Product.Copy(myProduct);
       myOldProduct.Display();
   }

}</source>

Return a value from a member method

<source lang="csharp">using System;

class Building {

 public int area;      
 public int occupants; 

 // Return the area per person.  
 public int areaPerPerson() {  
   return area / occupants; 
 }  

}

class MainClass {

 public static void Main() {   
   Building house = new Building();   
   Building office = new Building(); 
   int areaPP; // area per person 

   house.occupants = 4;  
   house.area = 2500;  

   office.occupants = 25;  
   office.area = 4200;  
  
   areaPP = house.areaPerPerson(); 

   Console.WriteLine("house has:\n  " + 
                     house.occupants + " occupants\n  " + 
                     house.area + " total area\n  " + 
                     areaPP + " area per person"); 


   Console.WriteLine(); 

   // obtain area per person for office 
   areaPP = office.areaPerPerson(); 

   Console.WriteLine("office has:\n  " + 
                     office.occupants + " occupants\n  " + 
                     office.area + " total area\n  " + 
                     areaPP + " area per person"); 
 }   

}</source>

house has:
  4 occupants
  2500 total area
  625 area per person
office has:
  25 occupants
  4200 total area
  168 area per person