You are on page 1of 149

5

C#C#


PANDA

Suzuki Reno

Toyota Camry

Honda Acura

XX 4C 4546

5.1
5.2
5.3
5.4
5.5
5.6

5.7
5.8
5.9
5.10
5.11 this
5.12

5.1

5.1

()
C#

5.1

5.2


class
{

}
class

5.2

C#

5.2
5-1:
class Cat
//
{
public int Age;
//
public int Weight; //
public void Meow() //
{
Console.WriteLine ("Meow...");
}
}
public

5.2


publicinternalprotected internalprotected
private

public
private
internal
protected internal

protected

5.2


new ()

new ()

5.2

.

Cat cat=new Cat();


cat.Age=2;
cat.Weight=5;
cat.Meow();
//

5.2

Cat cat;
cat.Age=2;
cat=new Cat();
cat.Weight=5;

//

5.2

new Cat();

new Cat().Meow();

5-1
using System;
namespace P5
{
class Cat
{
public int Age;
public int Weight;
public void Meow()
{
Console.WriteLine("Meow...");
Console.WriteLine("{0}",Age);
}
}

5-1
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
cat.Age = 2;
cat.Weight = 5;
cat.Meow();
Console.WriteLine("");
new Cat().Age = 3;
new Cat().Meow();
}
}
}

using System;
class Student
{
public string Name;
public string Sex;
public int Age;
public void Outout()
{
Console.WriteLine("{0}",Name);
Console.WriteLine("{0}", Sex);
Console.WriteLine("{0}", Age);
}
}


class Program
{
static void Main(string[] args)
{
Student stu1 = new Student ();
stu1.Name = "";
stu1.Sex ="";
stu1.Age =21;
Console.WriteLine("");
stu1.Outout();

}
}


class Program
{
static void Main(string[] args)
{
Student stu1 = new Student ();
stu1.Name = "";
stu1.Sex ="";
stu1.Age =21;
Console.WriteLine("stu1?");
stu1.Outout();
Student stu2 = new Student();
stu2.Name = "";
stu2.Sex = "";
stu2.Age = 18;
Console.WriteLine("stu2?");
stu2.Outout();
}
}

5.3
5.3.1 (static)
5.3.2 (readonly)

5.3.1

5.3.1
static

public static int Year=2012;

5.3.1
class A { public static int I; }
class B { public static int J; }
class UseStatic
{
static void Main()
{
A a=new A();
a.I=1;
A.I=2;
B.J=3;
}
}

//
//

//

5.3.2
readonly

5.6.2

public readonly int X;


//
public static readonly int Y=10;

5.4

public const int X=10;


5.4

static
object

5.4

using System;
class A{
public const static int X=10;
public const int Y=20; }
class UseConst{
static void Main()
{
A a = new A();
Console.WriteLine(a.Y);
Console.WriteLine(A.Y);
}

//conststatic

//

5.4

constreadonly


using System;
namespace rand
{
class Program
{
public static void Main()
{
RandNum r1=new RandNum();
Console.WriteLine("{0} {1} {2}", RandNum.x,RandNum.y, r1.z);
RandNum r2 = new RandNum();
Console.WriteLine("{0} {1} {2}", RandNum.x, RandNum.y, r2.z);
}
}
class RandNum //
{
public static Random rand = new Random();
public const int x = 100;
public static readonly int y = rand.Next(100);
public readonly int z = rand.Next(100);
}
}

5.5
5.5.1
5.5.2

5.5.1
static

this(5.11)


5-2

5-2
//StaticMethod.cs
using System;
class Cat
{
static Cat c = new Cat();
public int Age = 0;
public static Cat BirthCat()
{
return new Cat();
}
public static Cat GetCat()
{
return c;
}
}

class StaticMethod
{
static void Main()
{
Cat cat1=Cat.BirthCat();
Cat.GetCat().Age=1;
Console.WriteLine("CAT 1 Age={0}", cat1.Age);
Console.WriteLine("CAT 2 Age={0}",
Cat.GetCat().Age);
}
}

5.5.2

5-3

//PassObject.cs
using System;
class Number
{
public int I;
}
class PassObject
{
static void Main()
{
Number num1=new Number();
Number num2=num1;
//num2num1
num1.I=0;
Console.WriteLine("");
Console.WriteLine("f1num1.I={0}",num1.I);
f1(num1);

Console.WriteLine("f1num1.I={0}",num1.I);
if(num1==num2) //num2num1
Console.WriteLine("num2num1");
else
Console.WriteLine("num2num1");
Number num3=new Number();
Number num4=num3; // num4num3
num3.I=0;
Console.WriteLine("\n");
Console.WriteLine("f2num3.I={0}",num3.I);
f2(ref num3);
Console.WriteLine("f2num3.I={0}",num3.I);
if(num3==num4) //num4num3
Console.WriteLine("num4num3");
else
Console.WriteLine("num4num3");
}

static void f1(Number n)


{
n.I++;
n=new Number();
n.I=10;
}
static void f2(ref Number n)
{
n.I++;
n=new Number();
n.I=10;

}
}

5.5.2
===!=

class Number{
public int I; }
Number n1=new Number();
Number n2=new Number();
n1.I=n2.I=0;
bool b=(n1==n2); // b=?
n1=n2;
b=(n1==n2);
//
b=?

5.5.2

i=j
:
i
j

1
2

c2 = c1

:
i
j

c2

c2

c1

c1

2
2

c2: Cat

c1: Cat

5.6

C#

using System
struct A
{ public int I;
public void Method(){}
}
class B
{
static void Main()
{
int i;
Console.WriteLine("i={0}",i);
//
i=1;
Console.WriteLine("i={0}",i);
A a;
Console.WriteLine("a.I={0}",I); //
a.Method();
//
a.I=0;
Console.WriteLine("a.I={0}",I);
a.Method();
}
}

5.6 ()
C#

C#
5-4

5-4

//DefaultValues.cs
using System;
enum E{E0,E1,E2}
struct A
{
public int I;
}
class B{ }

class C
{
sbyte
byte
short
ushort
int
uint
long
ulong
float
double
decimal
bool
char
E
A
B

sb;
b;
s;
us;
i;
ui;
longi;
ulongi;
f;
d;
dec;
boolean;
c;
e;
a;
bclass;

public void Output()


{
Console.WriteLine(
"
"--------------"sbyte
"byte
"short
"ushort
"int
"uint
"long
"ulong
"float
"double
"decimal
"bool
"char
"E |
"A |
"int
"
}
}

|
\n"+
| ----------------\n"+
|
"+sb+"\n"+
|
"+b+"\n"+
|
"+s+"\n"+
|
"+us+"\n"+
|
"+i+"\n"+
|
"+ui+"\n"+
|
"+longi+"\n"+
|
"+ulongi+"\n"+
|
"+f+"\n"+
|
"+d+"\n"+
|
"+dec+"\n"+
|
"+boolean+"\n"+
|
"+c+"\n"+
"+e+"\n"+
"+a+"\n"+
|
"+a.I+"\n"+
|
"+bclass+"\n");

class DefaultValues
{
static void Main()
{
C c=new C();
c.Output();
}
}

5.6

5.6.1
5.6.2
5.6.3
5.6.4

5.6.1

.
class A{}
class B
{
char c='A';
byte b=6;
short s=60;
int i=600;
long l=700;
float f=2.2f;
double d=3.6;
A a=new A();
}

5.6.1

class B
//
{
static int i=2; //
int j=3;
int k=j*3;
//
int m=f();
//
int n=i;
//
int f()
{
return 1;
}
}

5.6.1

struct A
{
public int I=2;
}

//

5.6.2

5-5

5-5
//Constructor.cs
using System;
class Cat
{
public int Age;
public int Weight;
public Cat(int a,int w)
{
Age=a;
Weight=w;
}
}

class Constructor
{
static void Main()
{
Cat cat=new Cat(5,10);
//
Console.WriteLine("CAT: Age={0}\tWeight={1}",
cat.Age,cat.Weight);
}
}

5.6.2

5-6

//OverloadConstructors.cs
using System;
class Cat
{
public int Age;
public int Weight;
public Cat()
{
Age=2;
Weight=4;
Console.WriteLine("in Cat()");
}
public Cat(int a,int w)
{
Age=a;
Weight=w;
Console.WriteLine("in Cat(int a,int w)");
}
}

public class OverloadConstructors //5-9


{
public static void Main() //5-9
{
Cat cat1=new Cat();
Console.WriteLine("CAT1 Age={0}\tWeight={1}",
cat1.Age,cat1.Weight);
Cat cat2=new Cat(5,10);
Console.WriteLine("CAT2 Age={0}\tWeight={1}",
cat2.Age,cat2.Weight);
}
}

5.6.2

5-5

5-5
//Constructor.cs
using System;
class Cat
{
public int Age;
public int Weight;
public Cat(int a,int w)
{
Age=a;
Weight=w;
}
}

class Constructor
{
static void Main()
{
Cat cat=new Cat();
//
Console.WriteLine("CAT: Age={0}\tWeight={1}",
cat.Age,cat.Weight);
}
}

5.6.3
1

class StaticConstructor
{
public static int I;
public static int J;
static StaticConstructor()
{
I=1;
J=2;
}
}

5.6.3

5-7

5-7

//StaticInit.cs
using System;
class Cat
{
public Cat(int i)
{
Console.WriteLine("Cat({0})",i);
}
public void Method(int i)
{
Console.WriteLine("Method({0})",i);
}
}

class Cats
{
public static Cat C1;
public static Cat C2;
static Cats()
{
C1=new Cat(1);
C2=new Cat(2);
}
public Cats()
{
Console.WriteLine("Cats()");
}

class StaticInit
{
static void Main()
{
Console.WriteLine("in Main()");
Cats.C1.Method(7);
}
//
// static
Cats
c=new
Cats();
static Cats
c=new
Cats();
}

5.6.4
C#

struct A{
public int I;
public int J;
}
class B{
static void Main()
{
A a;
a.I=0;
a.J=1;
}
}

5.6.4
C#new
new

int i=new int();


// System.Int32 i=new System.Int32();
System.Int32i

int i=0;

int i=new int(0);
//System.Int32

5.6.4

5-8

5-8
//StructInit.cs
using System;
struct A
{
public int I;
public int J;
public A(int i,int j)
{
I=i;
J=j;
}
}

class StructInit
{
static void Main()
{
A a1=new A();
//
Console.WriteLine("a1.I={0}\ta1.J={1}",a1.I,a1.J);
A a2=new A(1,1);
Console.WriteLine("a2.I={0}\ta2.J={1}",a2.I,a2.J);
}
}

5.7
C#

C#

5.7.1
5.7.2
5.7.3

5.7.1
C#
EXEDLL
EXE

5-9

5-6

5-9

5-6

//RefEXE.cs
using System;
class RefEXE
{
static void Main()
{
Console.WriteLine("5-6");
OverloadConstructors.Main();
}
}

5.7.1
csc
/reference/r

/reference/r/reference
/r

csc /r:a.exe /r:b.exe c.exe


csc /r:a.exe;r:b.exe c.exe

5-9

5-6


csc /r:P5_6.exe P5_9.exe

.net


P5_6.exe

5.7.1
DLL
5-10 DLL
//Dog.cs
using System;
public class Dog
{
public void Bark()
{
Console.WriteLine("Bowwow...");
}
}

5-10

DLL

Main
exe
dlldll
csc/target/t
library
csc /t:library P5_10.cs

5-10

DLL

Visual Studio.net
.cs

P5_10
shift+F6

5.7.2
C#

namespace NameSpaceName
{

5.7.2

namespace N1
{
namespace N2
{
namespace N3
{
public class A {}
}
}
}

5.7.2

.

namespace N1.N2.N3
{
public class A {}

5.7.2
.NET

5-11

//Animal.cs
using System;
namespace Liu.CShape.Ch05
{
public class Wolf
{
public void Howl()
{
Console.WriteLine("Howl...");
}
}
public class Tiger
{
public void Growl()
{
Console.WriteLine("Growl...");
}
}
}

5.7.2

5.7.3

class A{}
namespace N1.N2{
class B {}}
namespace N1.N2.N3
{
class C {
public static void Main() {
A a=new A();
B b=new B();
}
}
}

5.7.3


using

5.7.3
namespace
{
class
}
namespace
{
using
class
{

N1.N2
A {}
N3
N1.N2; //N1.N2
B
public static void Main()
{
A a=new A();
}

}
}

5.7.3
namespace
namespace
{
using
class
{

N1.N2 {class A {} }
N3
N1;
B

//N1

public static void Main()


{
N2.A a=new N2.A(); //
A aa= new A();
//
N1.N2.A aaa=new N1.N2.A(); //
}
}
}

5.7.3

5-12

5-12
//UseNamesapce.cs
using Liu.CShape.Ch05;

//P5_11.dll

public class UseNamespace


{
public static void Main()
{
Wolf w=new Wolf();
Tiger t=new Tiger();
w.Howl();
t.Growl();
}
}

5.7.3

using Space1;
using Space2;

Space1Space2
MyClass
Myclass
MyClass

Space1MyClass

Space1.MyClass m=new Space1.MyClass();

5.7.3

5.7.3
namespace N1.N2
{ class A{} }
namespace N3
{
using N1.N2
class A{}
class B
{
public static void Main()
{
A a = new A(); //N3.A
N1.N2.A aa = new A(); //N1.N2.A
}
}
}

5.8
C#
publicinternalprotected internal
protectedprivate

5.8.1
5.8.2

5.8.1

publicinternal
public

internal

5.8.1


publicinternalprotected internalprotectedprivate
public
internalprivate
private

class OuterClass
//internal
{
class InnerClass1{} //private
protected internal class InnerClass2{}
public class InnerClass3{}
}

5.8.2
public

private

internal

5.8.2
protected internal

protected

protected internal
protected

5.8.2
private

C#C++

5-13

//UseTime.cs
using System;
public class Time
{
private int hour;
private int minute;
private int second;
public Time(int h,int m,int s)
{
hour=h;
minute=m;
second=s;
}

public void setHour(int h)


{
hour=((h>=0)&&(h<24)?h:0);
}
public int getHour()
{
return hour;
}

public void setMinute(int m)


{
minute=((m>=0)&&(m<60)?m:0);
}
public int getMinute()
{
return minute;
}

public void setSecond(int s)


{
second=((s>=0)&&(s<60)?s:0);
}
public int getSecond()
{
return second;
}
}

class UseTime
{
static void Main()
{
Time t=new Time(12,0,0);

Console.WriteLine("{0}:{1}:{2}",t.getHour(),t.getMinut
e(),t.getSecond());
t.setHour(8);
t.setMinute(30);
t.setSecond(30);
Console.WriteLine("{0}:{1}:{2}",t.getHour(),t.getMinut
e(),t.getSecond());
}
}

5.8.2
5-13

5.9

getset

5-13hour
Hour

5.9
public int Hour
//Hour
{
get
//get
{
return hour;
}
set
//set
{
hour=((value>=0)&&(value<24)?value:0);
}
}

5.9
setvalue


get
set

getset

5-14

//UseTime.cs
using System;
public class Time
{
private int hour;
private int minute;
private int second;
public Time(int h,int m,int s)
{
hour=h;
minute=m;
second=s;
}

public int Hour //Hour


{
get
//get
{
return hour;
}
set
//set
{
hour=((value>=0)&&(value<24)?value:0); //value

}
}

public int Minute


//Minute
{
get
{
return minute;
}
set
{
minute=((value>=0)&&(value<60)?value:0);
}
}

public int Second


//Second
{
get
{
return second;
}
set
{
second=((value>=0)&&(value<60)?value:0);
}
}
}

class UseTime1
{
static void Main()
{
Time t=new Time(12,0,0);
Console.WriteLine("{0}:{1}:{2}",t.Hour,t.Minute,t.Second);

t.Hour=8;
t.Minute=30;
t.Second=30;
Console.WriteLine("{0}:{1}:{2}",t.Hour,t.Minute,t.Second);

}
}
}

5.9



value

5.9
public class A
{
private int i;
private int j;
public int Sub
//
{
get
{
return j-i;
}
}
public A(int a,int b)
{
i=a;
j=b;
}
}

5.10

5.10.1
5.10.2
5.10.3

5.10.1

class A
{
public void Method()
{
i++;
//i
Console.WriteLine(i);
}
private int i=2;
}

5.10.2

void f()
{
int i=10;
//i
if(i>0)
{
...
int j=2; //j
...
}
//j
}
//i

5.10.2

void f()
{

int i=10;
{
...
int i =2; //
...
}
}

5.10.2

void f()
{
int x=0;
int y=0;
//for
for(int i=1;i<10;i++)
x+=i;
for(int i=1;i<10;i++)
y+=i;
}

5.10.2


this

using System;
class A{
const int i = 10;
int j = 20;
void f(){}
public void Method(){
int i = 1; int j = 2; const int f = 3;
Console.WriteLine(i);
//
Console.WriteLine(j);
//
Console.WriteLine(f);
//
Console.WriteLine(A.i);
//
Console.WriteLine(this.j); //
this.f();
//
f();
//this
}
}

5.10.3

C#

void f()
{
...
{

}
}

...
Cat cat=new Cat();
...
//cat

5.10.3

"~"

5-15

5-15

//Destruct.cs
using System;
class Destruct
{
Destruct()
{
Console.WriteLine("Destruct()");
}
~Destruct()
{
Console.WriteLine("~Destruct()");
}

static void Main()


{
Console.WriteLine("Destruct");
Destruct d=new Destruct();
Console.WriteLine("Destruct
");
}
}

5.11 this
this

this

this
this

This

5.11 this
5_13Time
public Time(int h,int m,int s)
{
this.hour=h;
this.minute=m;
this.second=s;
}

this

5.11 this
this

5-16

5-17

5-18

5-16
//MyThis1.cs
using System;
class Cat
{
private int age=0;
public Cat Grow()
{
age++;
return this;
}
public void Print()
{
Console.WriteLine("{0}",age);
}
}

public class MyThis1


{
public static void Main()
{
Cat cat=new Cat();
cat.Grow().Grow().Grow().Grow().Print();
}
}

5-17
//MyThis2.cs
using System;
class Cat
{
private int age;
private int weight;
public Cat(int age,int weight)
ageweight
{

this.age=age;
this.weight=weight;
}
public void Print()
{
Console.WriteLine("{0},{1}",age,weight);
}
}

public class MyThis2


{
public static void Main()
{
Cat cat=new Cat(1,5);
cat.Print();
}
}

5-18
//MyThis3.cs
using System;
class Cat
{
private int age;
private int weight;
public int Age
{
get
{
return age;
}
set
{
age=value;
}
}

public int Weight


{
get
{
return weight;
}
set
{
weight=value;
}
}

public Cat(int a,int w)


{
Age=a;
Weight=w;
Console.WriteLine("in Cat(int a,int w)");
}
public Cat():this(2,4)
{
Console.WriteLine("in Cat()");
}
}

public class MyThis3


{
public static void Main()
{
Cat cat1=new Cat();
Console.WriteLine("CAT 1 {0}
{1}",cat1.Age,cat1.Weight);
Cat cat2=new Cat(5,10);
Console.WriteLine("CAT 2 {0}
{1}",cat2.Age,cat2.Weight);
}
}

5.11 this
5_18this


this

this

5.12
1
class

2
new

3

refout

5.12
5

5.12
9

1
2Rectangle

32Rectangle
(0,0)
4
Rectangle
(2.1,3.2)(5.2,6.3)

Rectangle
(1,2)(6.8,10.5)

You might also like