Formatting Numeric and Date Values Method Description
Quick Reference Format Item Syntax: {index[,alignment] [:format string]} Substring mystring.Substring(ndx, len) string alpha = abcdef; index Specifies element in list of values to which format is applied. // returns cdef 1. Data Types alignment Indicates minimum width (in characters) to display value. string s= alpha.Substring(2); format string Contains the code that specifies the format of the displayed value. // returns de Primitive Size Example Example: String.Format(Price is: {0:C2}, 49.95); // output: Price is: $ 49.95 s = alpha.Substring(3,2); string 2 bytes/char s = reference; bool b = true; a. Numeric Formatting ToCharArray Places selected characters in a string char 2 bytes ch = a; Format Pattern Value Description in a char array: byte 1 byte b = 0x78; Specifier short 2 bytes Ival = 54; C or c {0:C2}, 1388.55 $ 1388.55 Currency. String vowel = aeiou; int 4 bytes Ival = 540; D or d {0:D5}, 45 00045 Must be integer value. // create array of 5 vowels long 8 bytes ival = 5400; E or e {0,9:E2}, 1388.55 1.39+E003 Must be floating point. char[] c = vowel.ToCharArray(); float 4 bytes val = 54.0F; F or f {0,9:F2}, 1388.55 1388.55 Fixed Point representation. // create array of i and o. double 8 bytes val = 54.0D; N or n {0,9:N1}, 1388.55 1,388.6 Insert commas char[] c = vowel.ToCharArray(2,2); decimal 16 bytes val = 54.0M; P or p {0,9:P3}, .7865 78.650% Converts to percent. R or r {0,9:R}, 3.14159 3.14159 Retains all decimal places. 2. Arrays X or x {0,9:X4}, 31 001f Converts to Hex 4. System.Text.StringBuilder Declaration Example: CultureInfo ci = new CultureInfo("de-DE"); // German culture Constructor int[] numArray = {1903, 1907, 1910}; string curdt = String.Format(ci,"{0:M}",DateTime.Now); // 29 Juni StringBuilder sb = new StringBuilder(); int[] numArray = new int[3]; StringBuilder sb = new StringBuilder(mystring); // 3 rows and 2 columns b. DateTime Formatting: (January 19, 2005 16:05:20) en-US StringBuilder sb = new StringBuilder(mystring,capacity); int[ , ] nums = {{1907, 1990}, {1904, 1986}, {1910, 1980}}; Format Value Displayed Format Value Displayed d 1/19/2005 Y or y January, 2005 mystring Initial value of StringBuilder object Array Operations capacity Initial size (characters) of buffer. Array.Sort(numArray); // sort ascending D Wednesday, January t 4:05 PM // Sort begins at element 4 and sorts 10 elements 19, 2005 Using StringBuilderMembers Array.Sort(numArray, 4,10); decimal bmi = 22.2M; // Use one array as a key and sort two arrays f Wednesday, January T 4:05:20 PM int wt=168; string[] values = {Cary, Gary, Barbara}; 19, 2005 4:05:20 PM StringBuilder sb = new StringBuilder(My weight is ); string[] keys = {Grant, Cooper, Stanwyck}; sb = sb.Append(wt); // can append number Array.Sort(keys, values); F Wednesday, January s 2005-01-19T16:05:20 sb= sb.Append( and my bmi is ).Append(bmi); // Clear elements in array (array, 1st element, # elements) 19, 2005 4:05 PM // my weight is 168 and my bmi is 22.2 Array.Clear(numArray, 0, numArray.Length); sb= sb.Replace(22.2,22.4); // Copy elements from one array to another g 1/19/2005 4:05 PM u 2005-01-19 16:05:20Z string s = sb.ToString(); Array.Copy(src, target, numelements); // Clear and set to new value G 1/19/2005 4:05:20 PM U Wednesday, January 19, 2005 21:05:20PM sb.Length=0; 3. String Operations sb.Append(Xanadu); M or m January 19 Method Description 5. DateTime and TimeSpan Compare String.Compare(stra, strb, case, ci) bool case true for case insensitive 7. Using the System.Text.RegularExpressions.Regex class DateTime Constructor ci new CultureInfo(en-US) DateTime(yr, mo, day) returns: <0 if a<b, 0 if a=b, 1 if a>b string zipexp = @"\d{5}((-|\s)?\d{4})?$"; string addr="W.44th St, New York, NY 10017-0233"; DateTime(yr, mo, day, hr, min, sec) IndexOf str.IndexOf(val, start, num) Match m = Regex.Match(addr,zipexp); // Static method Regex zipRegex= new Regex(zipexp); DateTime bday = new DateTime(1964,12,20,11,2,0); val string to search for DateTime newyr= DateTime.Parse(1/1/2005); start where to begin in string m= zipRegex.Match(addr); // Use Regex Object Console.WriteLine(m.Value); // 10017-0233 DateTime currdt = DateTime.Now; num number of chars to search // also AddHours, AddMonths, AddYears returns (1) if no match. DateTime tomorrow = currdt.AddDays(1); Pattern Description Example TimeSpan diff = currdt.Subtract(bday); LastIndexOf Search from end of string. + Match one or more occurrence ab+c matches abc, abbc // 14795 days from 12/20/64 to 6/24/05 * Match zero or more occurrences ab*c matches ac, abbc Console.WriteLine({0}, diff.Days); Replace newstr= oldstr.Replace(old,new); ? Matches zero or one occurrence ab?c matches ac, abc \d \D Match decimal digit or non-digit (\D) \d\d matches 01, 55 // TimeSpan(hrs, min, sec) Split Char[] delim= { , ,}; \w \W Match any word character or non-char \w equals [a-zA-Z0-9_] TimeSpan ts = new TimeSpan(6, 30, 10); string w = Kim, Joanna Leslie; \s \S Match whitespace or non-whitespace \d*\s\d+ matches 246 98 // also FromMinutes, FromHours, FromDays // create array with three names [ ] Match any character in set [aeiou]n matches in, on TimeSpan ts = TimeSpan.FromSeconds(120); string[] names= w.Split(delim); [^ ] Match any character not in set [^aeiou] matches r or 2 TimeSpan ts = ts2 ts1; // +,-,>,<,==, != a|b Either a or b jpg|jpeg|gif matches .jpg \n \r \t New line, carriage return, tab Loop Constructs (Continued) 8. Using the C# Compiler at the Command Line 11. Delegates and Events for (initializer; for (int i=0;i<8;i++) C:\>csc /t:library /out:reslib.dll mysource.cs Delegates termination condition; { csc /t:winexe /r:ctls1.dll /r:ctls2.dll winapp.cs [modifiers] delegate result-type delegate name ([parameter list]); iteration;) tot += i; csc /keyfile:strongkey.snk secure.cs { // statements } } // (1) Define a delegate that calls method(s) having a single string parameter Option Description public delegate void StringPrinter(string s); foreach (type identifier in int[] ages = {27, 33, 44}; /addmodule Import metadata from a file that does // (2) Register methods to be called by delegate collection) foreach(int age in ages) not contain a manifest. StringPrinter prt = new StringPrinter(PrintLower); { // statements } { tot += age; } prt += new StringPrinter(PrintUpper); /debug Tells compiler to emit debugging info. prt(Copyright was obtained in 2005); / / execute PrintLower and PrintUpper 10. C# Class Definition /doc Specifies an XML documentation file Using Anonymous Methods with a Delegate Class to be created during compilation. Rather than calling a method, a delegate encapsulates code that is executed: [public | protected | internal | private] /keyfile prt = delegate(string s) { Console.WriteLine(s.ToLower()); }; [abstract | sealed | static] Specifies file containing key used to prt += delegate(string s) { Console.WriteLine(s.ToUpper()); }; class class name [:class/interfaces inherited from] create a strong named assembly. prt(Print this in lower and upper case.); /lib Specifies directory to search for Constructor external referenced assemblies. Events [access modifier] class name (parameters) [:initializer] // class.event += new delegate(event handler method); /out Name of compiled output file. Button Total = new Button(); initializer base calls constructor in base class. Total.Click += new EventHandler(GetTotal); this calls constructor within class. /reference (/r) Reference to an external assembly. // Event Handler method must have signature specified by delegate private void GetTotal( object sender, EventArgs e) { public class Shirt: Apparel { /resource Resource file to embed in output. public Shirt(decimal p, string v) : base(p,v) Commonly used Control Events { constructor body } /target (/t) /t:exe /t:library /t:module /t:winexe Event Delegate Method Click, MouseEnter EventHandler( object sender, EventArgs e) [access modifier] DoubleClick, MouseLeave [static | virtual | override | new | sealed | abstract ] 9. C# Language Fundamentals MouseDown, Mouseup, MouseEventHandler(object sender, method name (parameter list) { body } MouseMove MouseEventArgs e) Control Flow Statements e.X, e.Y x and y coordinates virtual method can be overridden in subclass. e.Button MouseButton.Left, Middle, Right override overrides virtual method in base class. switch (expression) switch (genre) new hides non-virtual method in base class. { case expression: { KeyUp, KeyDown KeyEventHandler(object sndr, KeyEventArgs e) sealed prevents derived class from inheriting. // statements case vhs: e.Handled Indicates whether event is handled. abstract must be implemented by subclass. break / goto / return() price= 10.00M; e.KeyCode Keys enumeration, e.g., Keys.V case ... break; e.Modifiers Indicates if Alt, Ctrl, or Shift key. Passing Parameters: default: case dvd: KeyPress KeyPressEventHandler(object sender, a. By default, parameters are passed by value. // statements price=16.00M; KeyPressEventArgs e) b. Passing by reference: ref and out modifiers break / goto / return() break; } default: string id= gm; // caller initializes ref 12. struct expression may be price=12.00M: int weight; // called method initializes integer, string, or enum. break; GetFactor(ref id, out weight); } [attribute][modifier] struct name [:interfaces] { struct-body} // ... other code here static void GetFactor(ref string id, out int wt) if (condition) { Differences from class: if (genre==vhs) { // statements price=10.00M; is a value type cannot inherit from a class or be inherited if (id==gm) wt = 454; else wt=1; } else { else if (genre==dvd) fields cannot have initializer explicit constructor must have a parameter return; // statements price=16.00M; } } else price=12.00M; 13. enum (Enumerated Type) Property Loop Constructs enum enum Operations [modifier] <datatype> property name { public string VendorName enum Fabric: int { int cotNum = (int) Fabric.cotton; // 1 { while (condition) while ( ct < 8) cotton = 1, string cotName = Fabric.cotton.ToString(); // cotton { body } { tot += ct; ct++; } get { return vendorName; } silk = 2, string s = Enum.GetName(typeof(Fabric),2); // silk set { vendorName = value; } // note value keyword wool = 4, // Create instance of wool enum if it is valid } do { body } do { tot += ct; ct++;} rayon = 8 if(Enum.IsDefined(typeof(Fabric), wool) Fabric woolFab while (condition); while (ct < 8); } = (Fabric)Enum.Parse(typeof(Fabric),wool);