/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // // Struct.cs - Issue an error message if you do not initialize all of // the fields in a structure // // Compile this program with the following command line: // C:>csc Struct.cs // using System; namespace nsStruct { struct POINT { public int cx; public int cy; public int var; public override string ToString () { return ("(" + cx + ", " + cy + ")"); } } public class StructDemo2 { static public void Main () { POINT pt; pt.cx = 24; pt.cy = 42; Console.WriteLine (pt); // Console.WriteLine ("(" + pt.cx + ", " + pt.cy + ")"); } } }
Software Development
software development notes, main category for Cs, Java, and other programming experiences.
Demonstates assignment operator on structures and classes.
/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // // CmpStCls.cs -- Demonstates assignment operator on structures and classes. // Compile this program with the following command line: // C:>csc CmpStCls.cs // namespace nsCompare { using System; // // Define a structure containing the x and y coordinates of a point struct stPoint { public int cx; public int cy; } // // Define a class containing the x and y coordinates of a point class clsPoint { public int cx; public int cy; } public class CmpStCls { static public void Main () { // Declare two structure variables stPoint spt1, spt2; // Initialize the members of only one structure spt1.cx = 42; spt1.cy = 24; // Assign the first structure to the first spt2 = spt1; // Now modify the first structure spt1.cx = 12; spt1.cy = 18; // Show the results Console.WriteLine ("For structures:"); Console.WriteLine (" The point for spt1 is ({0}, {1})", spt1.cx, spt1.cy); Console.WriteLine (" The point for spt2 is ({0}, {1})", spt2.cx, spt2.cy); // Now do the same thing with instances of the class clsPoint cpt1, cpt2; cpt1 = new clsPoint(); // Initialize the members of only one class instance cpt1.cx = 42; cpt1.cy = 24; // Assign the first class instance to the second cpt2 = cpt1; // Modify the first class cpt1.cx = 12; cpt2.cy = 18; // Show the results Console.WriteLine (" For structures:"); Console.WriteLine (" The point for cpt1 is ({0}, {1})", cpt1.cx, cpt1.cy); Console.WriteLine (" The point for cpt2 is ({0}, {1})", cpt2.cx, cpt2.cy); } } }
demonstrates using a structure to return a group of variables from a function
/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // tm.cs - demonstrates using a structure to return a group of variables // from a function // // Compile this program using the following command line: // D:>csc tm.cs // namespace nsStructure { using System; using System.Globalization; public struct tm { public int tm_sec; // Seconds after the minute public int tm_min; // Minutes after the hour public int tm_hour; // Hours since midnight public int tm_mday; // The day of the month public int tm_mon; // The month (January = 0) public int tm_year; // The year (00 = 1900) public int tm_wday; // The day of the week (Sunday = 0) public int tm_yday; // The day of the year (Jan. 1 = 1) public int tm_isdst; // Flag to indicate if DST is in effect } public class tmDemo { static public void Main() { DateTime timeVal = DateTime.Now; tm tmNow = LocalTime (timeVal); string strTime = AscTime (tmNow); Console.WriteLine (strTime); } static public tm LocalTime(DateTime tmVal) { tm time; time.tm_sec = tmVal.Second; time.tm_min = tmVal.Minute; time.tm_hour = tmVal.Hour; time.tm_mday = tmVal.Day; time.tm_mon = tmVal.Month - 1; time.tm_year = tmVal.Year - 1900; time.tm_wday = (int) tmVal.DayOfWeek; time.tm_yday = tmVal.DayOfYear; TimeZone tz = TimeZone.CurrentTimeZone; time.tm_isdst = tz.IsDaylightSavingTime (tmVal) == true ? 1 : 0; return (time); } // // Returns a string representing a time using UNIX format static public string AscTime (tm time) { const string wDays = "SunMonTueWedThuFriSat"; const string months = "JanFebMarAprMayJunJulAugSepOctNovDec"; string strTime = String.Format ("{0} {1} {2,2:00} " + "{3,2:00}:{4,2:00}:{5,2:00} {6} ", wDays.Substring (3 * time.tm_wday, 3), months.Substring (3 * time.tm_mon, 3), time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec, time.tm_year + 1900); return (strTime); } } }
Defining functions for structs
using System; struct Dimensions { public double Length; public double Width; Dimensions(double length, double width) { Length = length; Width = width; } public double Diagonal { get { return Math.Sqrt(Length * Length + Width * Width); } } }
demonstrates a custom constructor function for a structure
/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // tm2.cs - demonstrates a custom constructor function for a structure // Compile this program using the following command line: // D:>csc tm2.cs // namespace nsStructure { using System; using System.Globalization; struct tm { public tm (DateTime tmVal) { tm_sec = tmVal.Second; tm_min = tmVal.Minute; tm_hour = tmVal.Hour; tm_mday = tmVal.Day; tm_mon = tmVal.Month - 1; tm_year = tmVal.Year - 1900; tm_wday = (int) tmVal.DayOfWeek; tm_yday = tmVal.DayOfYear; TimeZone tz = TimeZone.CurrentTimeZone; tm_isdst = tz.IsDaylightSavingTime (tmVal) == true ? 1 : 0; } public int tm_sec; // Seconds after the minute public int tm_min; // Minutes after the hour public int tm_hour; // Hours since midnight public int tm_mday; // The day of the month public int tm_mon; // The month (January = 0) public int tm_year; // The year (00 = 1900) public int tm_wday; // The day of the week (Sunday = 0) public int tm_yday; // The day of the year (Jan. 1 = 1) public int tm_isdst; // Flag to indicate if DST is in effect public override string ToString() { const string wDays = "SunMonTueWedThuFriSat"; const string months = "JanFebMarAprMayJunJulAugSepOctNovDec"; return (String.Format ("{0} {1} {2,2:00} " + "{3,2:00}:{4,2:00}:{5,2:00} {6} ", wDays.Substring (3 * tm_wday, 3), months.Substring (3 * tm_mon, 3), tm_mday, tm_hour, tm_min, tm_sec, tm_year + 1900)); } } public class tm2Demo { static public void Main() { DateTime timeVal = DateTime.Now; tm tmNow = new tm (timeVal); Console.WriteLine (tmNow); } } }
Structures are good when grouping data
/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Structures are good when grouping data. using System; // Define a packet structure. struct PacketHeader { public uint packNum; // packet number public ushort packLen; // length of packet } // Use PacketHeader to create an e-commerce transaction record. class Transaction { static uint transacNum = 0; PacketHeader ph; // incorporate PacketHeader into Transaction string accountNum; double amount; public Transaction(string acc, double val) { // create packet header ph.packNum = transacNum++; ph.packLen = 512; // arbitrary length accountNum = acc; amount = val; } // Simulate a transaction. public void sendTransaction() { Console.WriteLine("Packet #: " + ph.packNum + ", Length: " + ph.packLen + ", Account #: " + accountNum + ", Amount: {0:C} ", amount); } } // Demonstrate Packet public class PacketDemo { public static void Main() { Transaction t = new Transaction("31243", -100.12); Transaction t2 = new Transaction("AB4655", 345.25); Transaction t3 = new Transaction("8475-09", 9800.00); t.sendTransaction(); t2.sendTransaction(); t3.sendTransaction(); } }
Copy a struct
/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Copy a struct. using System; // Define a structure. struct MyStruct { public int x; } // Demonstrate structure assignment. public class StructAssignment { public static void Main() { MyStruct a; MyStruct b; a.x = 10; b.x = 20; Console.WriteLine("a.x {0}, b.x {1}", a.x, b.x); a = b; b.x = 30; Console.WriteLine("a.x {0}, b.x {1}", a.x, b.x); } }