/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Demonstrate the short-circuit operators.
using System;
public class SCops {
public static void Main() {
int n, d;
n = 10;
d = 2;
if(d != 0 && (n % d) == 0)
Console.WriteLine(d + " is a factor of " + n);
d = 0; // now, set d to zero
// Since d is zero, the second operand is not evaluated.
if(d != 0 && (n % d) == 0)
Console.WriteLine(d + " is a factor of " + n);
/* Now, try the same thing without short-circuit operator.
This will cause a divide-by-zero error. */
if(d != 0 & (n % d) == 0)
Console.WriteLine(d + " is a factor of " + n);
}
}
Language Basics
Demonstrate the relational and logical operators
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Demonstrate the relational and logical operators.
using System;
public class RelLogOps {
public static void Main() {
int i, j;
bool b1, b2;
i = 10;
j = 11;
if(i < j) Console.WriteLine("i < j");
if(i <= j) Console.WriteLine("i <= j");
if(i != j) Console.WriteLine("i != j");
if(i == j) Console.WriteLine("this won't execute");
if(i >= j) Console.WriteLine("this won't execute");
if(i > j) Console.WriteLine("this won't execute");
b1 = true;
b2 = false;
if(b1 & b2) Console.WriteLine("this won't execute");
if(!(b1 & b2)) Console.WriteLine("!(b1 & b2) is true");
if(b1 | b2) Console.WriteLine("b1 | b2 is true");
if(b1 ^ b2) Console.WriteLine("b1 ^ b2 is true");
}
}
Demonstrate the difference between prefix postfix forms of ++
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
/*
Demonstrate the difference between prefix
postfix forms of ++.
*/
using System;
public class PrePostDemo {
public static void Main() {
int x, y;
int i;
x = 1;
Console.WriteLine(“Series generated using y = x + x++;”);
for(i = 0; i < 10; i++) {
y = x + x++; // postfix ++
Console.WriteLine(y + " ");
}
Console.WriteLine();
x = 1;
Console.WriteLine("Series generated using y = x + ++x;");
for(i = 0; i < 10; i++) {
y = x + ++x; // prefix ++
Console.WriteLine(y + " ");
}
Console.WriteLine();
}
}
[/csharp]
Math Operators with int value
using System;
class Operators {
static void Main() {
int a, b, c, d, e;
a = 14;
b = 15;
c = 20;
d = a + b - c; //d=9
c += d; //c=29
e = c + d; //e=38
e /= 2; //e=19
Console.WriteLine("{0}", e);
}
}
The + Operator Is Left Associative
using System;
public class MainClass {
public static void Main() {
Console.WriteLine(10 + 25 + "A"); // Same as (10 + 25) + "A", that is "35A"
Console.WriteLine("A" + 10 + 25); // Same as ("A" + 10) + 25, that is "A1025"
}
}
Interfaces:The As Operator
/*
A Programmer's Introduction to C# (Second Edition)
by Eric Gunnerson
Publisher: Apress L.P.
ISBN: 1-893115-62-3
*/
// 10 - InterfacesThe As Operator
// copyright 2000 Eric Gunnerson
using System;
public class TheAsOperator
{
public static void Main()
{
DiagramObject[] dArray = new DiagramObject[100];
dArray[0] = new DiagramObject();
dArray[1] = new TextObject("Text Dude");
dArray[2] = new TextObject("Text Backup");
// array gets initialized here, with classes that
// derive from DiagramObject. Some of them implement
// IScalable.
foreach (DiagramObject d in dArray)
{
IScalable scalable = d as IScalable;
if (scalable != null)
{
scalable.ScaleX(0.1F);
scalable.ScaleY(10.0F);
}
}
}
}
interface IScalable
{
void ScaleX(float factor);
void ScaleY(float factor);
}
public class DiagramObject
{
public DiagramObject() {}
}
public class TextObject: DiagramObject, IScalable
{
public TextObject(string text)
{
this.text = text;
}
// implementing IScalable.ScaleX()
public void ScaleX(float factor)
{
Console.WriteLine("ScaleX: {0} {1}", text, factor);
// scale the object here.
}
// implementing IScalable.ScaleY()
public void ScaleY(float factor)
{
Console.WriteLine("ScaleY: {0} {1}", text, factor);
// scale the object here.
}
private string text;
}
Operators and Expressions:Type operators:Is
/*
A Programmer's Introduction to C# (Second Edition)
by Eric Gunnerson
Publisher: Apress L.P.
ISBN: 1-893115-62-3
*/
// 14 - Operators and ExpressionsType operatorsIs
// copyright 2000 Eric Gunnerson
using System;
interface IAnnoy
{
void PokeSister(string name);
}
class Brother: IAnnoy
{
public void PokeSister(string name)
{
Console.WriteLine("Poking {0}", name);
}
}
class BabyBrother
{
}
public class TypeoperatorsIs
{
public static void AnnoyHer(string sister, params object[] annoyers)
{
foreach (object o in annoyers)
{
if (o is IAnnoy)
{
IAnnoy annoyer = (IAnnoy) o;
annoyer.PokeSister(sister);
}
}
}
public static void Main()
{
TestoperatorsIs.AnnoyHer("Jane", new Brother(), new BabyBrother());
}
}