using System; public class MyClass { public void DisplayMessage() { Console.WriteLine( "Welcome to the Grade Book!" ); } } public class MyClassTest { public static void Main( string[] args ) { MyClass myMyClass = new MyClass(); myMyClass.DisplayMessage(); } }
Class Interface
Properties:Virtual Properties
/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 18 - PropertiesVirtual Properties // copyright 2000 Eric Gunnerson using System; public abstract class DrawingObject { public abstract string Name { get; } } class Circle: DrawingObject { string name = "Circle"; public override string Name { get { return(name); } } } public class PropertiesVirtualProperties { public static void Main() { DrawingObject d = new Circle(); Console.WriteLine("Name: {0}", d.Name); } }
Properties:Static Properties
/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 18 - PropertiesStatic Properties // copyright 2000 Eric Gunnerson class Color { public Color(int red, int green, int blue) { this.red = red; this.green = green; this.blue = blue; } int red; int green; int blue; public static Color Red { get { return(new Color(255, 0, 0)); } } public static Color Green { get { return(new Color(0, 255, 0)); } } public static Color Blue { get { return(new Color(0, 0, 255)); } } } public class StaticProperties { static void Main() { Color background = Color.Red; } }
Delegates as Static Properties
/*
A Programmer's Introduction to C# (Second Edition)
by Eric Gunnerson
Publisher: Apress L.P.
ISBN: 1-893115-62-3
*/
// 22 – DelegatesDelegates as Static Properties
// copyright 2000 Eric Gunnerson
using System;
class Container
{
public delegate int CompareItemsCallback(object obj1, object obj2);
public void SortItems(CompareItemsCallback compare)
{
// not a real sort, just shows what the
// inner loop code might do
int x = 0;
int y = 1;
object item1 = arr[x];
object item2 = arr[y];
int order = compare(item1, item2);
}
object[] arr; // items in the collection
}
class Employee
{
Employee(string name, int id)
{
this.name = name;
this.id = id;
}
public static Container.CompareItemsCallback SortByName
{
get
{
return(new Container.CompareItemsCallback(CompareName));
}
}
public static Container.CompareItemsCallback SortById
{
get
{
return(new Container.CompareItemsCallback(CompareId));
}
}
static int CompareName(object obj1, object obj2)
{
Employee emp1 = (Employee) obj1;
Employee emp2 = (Employee) obj2;
return(String.Compare(emp1.name, emp2.name));
}
static int CompareId(object obj1, object obj2)
{
Employee emp1 = (Employee) obj1;
Employee emp2 = (Employee) obj2;
if (emp1.id > emp2.id)
return(1);
if (emp1.id < emp2.id)
return(-1);
else
return(0);
}
string name;
int id;
}
public class DelegatesasStaticProperties
{
public static void Main()
{
Container employees = new Container();
// create and add some employees here
employees.SortItems(Employee.SortByName);
// employees is now sorted by name
}
}
[/csharp]
Properties Accessors
/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 18 - PropertiesAccessors // copyright 2000 Eric Gunnerson public class PropertiesAccessors { private string name; public string Name { get { return name; } set { name = value; } } }
Properties: Side Effects When Setting Values
/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 18 - PropertiesSide Effects When Setting Values // copyright 2000 Eric Gunnerson using System; using System.Collections; class Basket { internal void UpdateTotal() { total = 0; foreach (BasketItem item in items) { total += item.Total; } } ArrayList items = new ArrayList(); Decimal total; } public class BasketItem { BasketItem(Basket basket) { this.basket = basket; } public int Quantity { get { return(quantity); } set { quantity = value; basket.UpdateTotal(); } } public Decimal Price { get { return(price); } set { price = value; basket.UpdateTotal(); } } public Decimal Total { get { // volume discount; 10% if 10 or more are purchased if (quantity >= 10) return(quantity * price * 0.90m); else return(quantity * price); } } int quantity; // count of the item Decimal price; // price of the item Basket basket; // reference back to the basket }
Properties: Use of Properties
/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 18 - PropertiesUse of Properties // copyright 2000 Eric Gunnerson using System; public class Auto { public Auto(int id, string name) { this.id = id; this.name = name; } // query to find # produced public int ProductionCount { get { if (productionCount == -1) { // fetch count from database here. } return(productionCount); } } public int SalesCount { get { if (salesCount == -1) { // query each dealership for data } return(salesCount); } } string name; int id; int productionCount = -1; int salesCount = -1; }