/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Namespaces can be nested.
using System;
namespace NS1 {
class ClassA {
public ClassA() {
Console.WriteLine("constructing ClassA");
}
}
namespace NS2 { // a nested namespace
class ClassB {
public ClassB() {
Console.WriteLine("constructing ClassB");
}
}
}
}
public class NestedNSDemo {
public static void Main() {
NS1.ClassA a= new NS1.ClassA();
// NS2.ClassB b = new NS2.ClassB(); // Error!!! NS2 is not in view
NS1.NS2.ClassB b = new NS1.NS2.ClassB(); // this is right
}
}
Namespaces are additive
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Namespaces are additive.
using System;
// Bring Counter into view.
using Counter;
// Here is one Counter namespace.
namespace Counter {
// A simple countdown counter.
class CountDown {
int val;
public CountDown(int n) {
val = n;
}
public void reset(int n) {
val = n;
}
public int count() {
if(val > 0) return val–;
else return 0;
}
}
}
// Here is another Counter namespace.
namespace Counter {
// A simple count-up counter.
class CountUp {
int val;
int target;
public int Target {
get{
return target;
}
}
public CountUp(int n) {
target = n;
val = 0;
}
public void reset(int n) {
target = n;
val = 0;
}
public int count() {
if(val < target) return val++;
else return target;
}
}
}
public class NSDemo5 {
public static void Main() {
CountDown cd = new CountDown(10);
CountUp cu = new CountUp(8);
int i;
do {
i = cd.count();
Console.Write(i + " ");
} while(i > 0);
Console.WriteLine();
do {
i = cu.count();
Console.Write(i + ” “);
} while(i < cu.Target);
}
}
[/csharp]
Creating an alias
using System;
using MyAlias=MyNamespace.Nested.MyClass;
namespace MyNamespace {
namespace Nested {
namespace MyClass {
public class Foo
{
int _Value;
public Foo() {
_Value = 0;
}
public int getValue()
{
return _Value;
}
}
}
}
}
class Test {
public static void Main() {
MyAlias.Foo myFoo = new MyAlias.Foo();
Console.WriteLine("Value {0}", myFoo.getValue());
}
}
Define an alias to represent a namespace
//
using CmpDb = YourCompany.SecondPartNamespace.InnerNamespace.YourClass;
namespace YourCompany.SecondPartNamespace {
namespace InnerNamespace {
public class YourClass {
public static void Open( string tblName ) {
System.Console.WriteLine("{0}", tblName );
}
}
}
}
public class CH1_14 {
public static void Main() {
CmpDb.Open("fred");
}
}
Using the alias keyword to refer to a nested namespace
//
using CmpDb = YourCompany.SecondPartNamespace.InnerNamespace.YourClass;
namespace YourCompany.SecondPartNamespace {
namespace InnerNamespace {
public class YourClass {
public static void Open( string tblName ) {
System.Console.WriteLine("{0}", tblName );
}
}
}
}
public class CH1_14 {
public static void Main() {
CmpDb.Open("fred");
}
}
Demonstrate the % operator
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Demonstrate the % operator.
using System;
public class ModDemo {
public static void Main() {
int iresult, irem;
double dresult, drem;
iresult = 10 / 3;
irem = 10 % 3;
dresult = 10.0 / 3.0;
drem = 10.0 % 3.0;
Console.WriteLine("Result and remainder of 10 / 3: " +
iresult + " " + irem);
Console.WriteLine("Result and remainder of 10.0 / 3.0: " +
dresult + " " + drem);
}
}
Mod test
/*
Learning C#
by Jesse Liberty
Publisher: O'Reilly
ISBN: 0596003765
*/
using System;
public class ModTester
{
public static int Main()
{
for (int counter=1; counter<=100; counter++)
{
Console.Write("{0} ", counter);
if ( counter % 10 == 0 )
{
Console.WriteLine(" {0}", counter);
}
}
return 0;
}
}
[/csharp]

