C#常用知识点简单回顾(有图有真相)_C#教程-查字典教程网
C#常用知识点简单回顾(有图有真相)
C#常用知识点简单回顾(有图有真相)
发布时间:2016-12-28 来源:查字典编辑
摘要:1)传值调用与引用调用复制代码代码如下:usingSystem;classMethodCall{publicstaticvoidMain()...

1)传值调用与引用调用

复制代码 代码如下:

using System;

class MethodCall

{

public static void Main()

{

/*

* 参数类型分为 in, ref, out 三种,默认为 in。

* in 类型在子方法中修改了对应变量后,主方法中的值不会发生改变。

* ref 类型在子方法中修改了对应变量后,主方法中的值也会发生改变。

* out 主方法中对应的变量不需要初始化。

*

*/

int a = 1, b = 2, c;

Console.WriteLine("Before Method Call : a = {0}, b = {1}, c 未赋值", a, b);

AMethod(a, ref b, out c);

Console.WriteLine("After Method Call : a = {0}, b = {1}, c = {2}", a, b, c);

Console.Read();

}

public static void AMethod(int x, ref int y, out int z)

{

x = 110;

y = 120;

z = 119;

}

}

效果图:

2)打印三角形

复制代码 代码如下:

using System;

public class Hello

{

public static void Main()

{

Console.Write("请输入行数:");

int lines = int.Parse(Console.ReadLine());

Console.WriteLine("");

for(int i=1; i<=lines ; i++)

{

for(int k=1; k<= lines-i; k++)

Console.Write(" ");

for(int j=1; j<=i*2+1; j++)

Console.Write("*");

Console.WriteLine("");

}

Console.ReadLine();

}

}

效果图:

3)递归求阶乘

复制代码 代码如下:

using System;

class Factor

{

public static void Main()

{

for(int i=1; i<=10; i++)

Console.WriteLine("{0} 的阶乘是 {1}",i, Factorial(i));

Console.Read();

}

public static long Factorial(long n)

{

if(n == 1)

return 1;

else

return n * Factorial(n-1);

}

}

效果图:

4)多态性

复制代码 代码如下:

using System;

class Car

{

public virtual void Drive()

{ Console.WriteLine("Drive Car"); }

}

class Truck : Car

{

public override void Drive()

{ Console.WriteLine("Drive Truck"); }

}

class Client

{

public static void Main()

{

Car c = new Truck();

c.Drive(); //多态性决定着将调用Truck的Drive方法

Console.Read();

}

}

效果图:

5)方法重载

复制代码 代码如下:

using System;

class Client

{

public static void Main()

{

//重载是指方法名相同,方法的签名不同

Console.WriteLine(Add(100,50));

Console.WriteLine(Add("100","50"));

Console.Read();

}

public static string Add(string a, string b)

{

return a + " add " + b;

}

public static int Add(int a, int b)

{

return a+b;

}

}

效果图:

6)构造函数

复制代码 代码如下:

using System;

public class Person

{

public string name = "";

public int age = 0;

//默认构造函数

public Person()

{

}

//构造函数重载(1)

public Person(int Age)

{

this.age = Age;

}

//构造函数重载(2)

public Person(int Age, string Name)

{

this.age = Age;

this.name = Name;

}

public void ShowInfo()

{

Console.WriteLine("姓名:" + name);

Console.WriteLine("年龄:" + age);

}

}

class Client

{

public static void Main()

{

Person p1 = new Person();

p1.ShowInfo();

Console.WriteLine("*************************");

Person p2 = new Person(25);

p2.ShowInfo();

Console.WriteLine("*************************");

Person p3 = new Person(25, "爱智旮旯");

p3.ShowInfo();

Console.Read();

}

}

效果图:

7)静态与非静态

复制代码 代码如下:

using System;

class StaticHello

{

public static void SayHello()

{ Console.WriteLine("Static Hello"); }

}

class NonStaticHello

{

public void SayHello()

{ Console.WriteLine("Non Static Hello"); }

}

class Client

{

public static void Main()

{

//静态方法调用应当使用 “类名.方法”

StaticHello.SayHello();

//非静态方法调用应当使用 “实例名称.方法”

NonStaticHello h = new NonStaticHello();

h.SayHello();

Console.Read();

}

}

效果图:

8)九九表

复制代码 代码如下:

using System;

public class JiuJiuBiao

{

public static void Main(string[] args)

{

int i,j;

for(i=1; i<10; i++)

{

for(j=1; j<10; j++)

{

Console.Write("{0:D1}*{1:D1}={2,2} ", i, j, i*j);

}

Console.WriteLine("");

}

Console.ReadLine();

}

}

效果图:

9)冒泡法排序

复制代码 代码如下:

using System;

class ArraySort

{

public static void Main()

{

int[] d = {10,15,21,43,17,98,2,74,63,10};

int temp;

//冒泡法排序

for(int i=0; i<d.Length; i++)

for(int j=i+1; j<d.Length; j++)

if(d[i]<d[j])

{

temp = d[i];

d[i]=d[j];

d[j]=temp;

}

//输出排序结果

foreach(int i in d)

Console.Write("{0}, ", i);

Console.Read();

}

}

效果图:

10)求质数

复制代码 代码如下:

using System;

class Factor

{

public static void Main()

{

for(int i=1; i<=100; i++)

if(IsPrime(i))

Console.WriteLine(i);

Console.Read();

}

public static bool IsPrime(int n)

{

for(int i=2; i<=Math.Sqrt(n); i++)

if(n%i == 0)

return false;

return true;

}

}

效果图:

11)使用接口排序(1)

复制代码 代码如下:

using System;

using System.Collections;

public class Person : IComparable

{

public int ID;

public string Rank;

public Person(int id, string rank)

{ this.ID=id; this.Rank = rank; }

#region IComparable Members

/*

* IComparable 接口只有一个方法: CompareTo。CompareTo方法

* 只接收一个object类型的参数,这意味着它可以接收任何类

* 型的数据(object是所有类的父类),这个方法会返回一

* 整型数值,含义如下:

*

* 1) 小于零,当前实例(this)小于obj对象

* 2) 等于零,当前实例(this)等于obj对象

* 3) 大于零,当前实例(this)大于obj对象

*

* Int32,Int16...,String,Decimal等数据类型都已经实现了IComparable接口

*/

public int CompareTo(object obj)

{

Person p = (Person)obj;

return this.ID.CompareTo(p.ID);

}

#endregion

}

class SortArrayList

{

static void Main(string[] args)

{

ArrayList list = new ArrayList();

list.Add(new Person(6, "排长"));

list.Add(new Person(3, "团长"));

list.Add(new Person(4, "司令"));

list.Add(new Person(5, "旅长"));

list.Add(new Person(7, "连长"));

list.Add(new Person(1, "军长"));

list.Add(new Person(2, "营长"));

list.Add(new Person(8, "师长"));

list.Sort();

Console.WriteLine("After Sorting");

foreach (Person person in list)

{

Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

}

}

}

效果图:

12)使用接口排序(2)

复制代码 代码如下:

using System;

using System.Collections;

public enum enuSortOrder

{IDAsc, IDDesc, RankAsc, RankDesc}

public class Person : IComparable

{

public static enuSortOrder intSortOrder = enuSortOrder.IDAsc;

public int ID;

public string Rank;

public Person(int id, string rank)

{ this.ID=id; this.Rank = rank; }

#region IComparable Members

/*

* IComparable 接口只有一个方法: CompareTo。CompareTo方法

* 只接收一个object类型的参数,这意味着它可以接收任何类

* 型的数据(object是所有类的父类),这个方法会返回一

* 整型数值,含义如下:

*

* 1) 小于零,当前实例(this)小于obj对象

* 2) 等于零,当前实例(this)等于obj对象

* 3) 大于零,当前实例(this)大于obj对象

*

* Int32,Int16...,String,Decimal等数据类型都已经实现了IComparable接口

*/

public int CompareTo(object obj)

{

Person p = (Person)obj;

switch ((int)intSortOrder)

{

case (int)enuSortOrder.IDAsc:

return this.ID.CompareTo(p.ID);

case (int)enuSortOrder.IDDesc:

return p.ID.CompareTo(this.ID);

case (int)enuSortOrder.RankAsc:

return RankCompare(this.Rank, p.Rank);

case (int)enuSortOrder.RankDesc:

return RankCompare(p.Rank, this.Rank);

default:

return this.ID.CompareTo(p.ID);

}

}

private int RankCompare(string rank1, string rank2)

{

int intRank1 = ConvertRankToInt(rank1);

int intRank2 = ConvertRankToInt(rank2);

if(intRank1 < intRank2)

return -1;

else if(intRank1 == intRank2)

return 0;

else

return 1;

}

private int ConvertRankToInt(string rank)

{

if(rank == "司令")

return 8;

else if(rank == "军长")

return 7;

else if(rank == "师长")

return 6;

else if(rank == "旅长")

return 5;

else if(rank == "团长")

return 4;

else if(rank == "营长")

return 3;

else if(rank == "连长")

return 2;

else

return 1;

}

#endregion

}

class SortArrayList

{

static void Main(string[] args)

{

ArrayList list = new ArrayList();

list.Add(new Person(6, "排长"));

list.Add(new Person(3, "团长"));

list.Add(new Person(4, "司令"));

list.Add(new Person(5, "旅长"));

list.Add(new Person(7, "连长"));

list.Add(new Person(1, "军长"));

list.Add(new Person(2, "营长"));

list.Add(new Person(8, "师长"));

list.Sort();

Console.WriteLine("Sort By ID Asc:");

foreach (Person person in list)

{

Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

}

Console.WriteLine("----------------------------");

Console.WriteLine("Sort By ID Desc:");

Person.intSortOrder = enuSortOrder.IDDesc;

list.Sort();

foreach (Person person in list)

{

Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

}

Console.WriteLine("----------------------------");

Console.WriteLine("Sort By Rank Asc:");

Person.intSortOrder = enuSortOrder.RankAsc;

list.Sort();

foreach (Person person in list)

{

Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

}

Console.WriteLine("----------------------------");

Console.WriteLine("Sort By Rank Desc:");

Person.intSortOrder = enuSortOrder.RankDesc;

list.Sort();

foreach (Person person in list)

{

Console.WriteLine("ID: " + person.ID.ToString() + ", Rank: " + person.Rank);

}

}

}

效果图:

13)属性、方法作用范围

复制代码 代码如下:

using System;

class Base

{

/*

* public 的可访问范围是所有类

* private 的可访问范围是当前类

* protected 的可访问范围是当前类及其子类

*/

public string name = "Tom";

private double salary = 1500;

protected int age = 20;

public virtual void ShowInfo()

{

Console.WriteLine(this.name); //可以,因为name是 public 型的

Console.WriteLine(this.salary); //可以,salary是private型,在Base类中可以访问

Console.WriteLine(this.age); //可以,因为age是protected型,在子类中可以访问

}

}

class Derived : Base

{

public override void ShowInfo()

{

Console.WriteLine(this.name); //可以,因为name是 public 型的

//Console.WriteLine(this.salary); //不可以,salary是private型,超出Base就无法访问

Console.WriteLine(this.age); //可以,因为age是protected型,在子类中可以访问

}

}

class Client

{

public static void Main()

{

Base b = new Base();

Console.WriteLine(b.name); //可以,因为name是 public 型的

//Console.WriteLine(this.salary); //不可以,salary是private型,超出Base就无法访问

//Console.WriteLine(this.age); //不可以,因为age是protected型,Client不是Base的子类

Console.WriteLine("==========================");

b.ShowInfo();

Console.WriteLine("==========================");

Derived d = new Derived();

d.ShowInfo();

}

}

效果图:

15)字段与属性

复制代码 代码如下:

using System;

class SumToHundred

{

public static void Main()

{

int sum=0;

for(int i=1; i<=100; i++)

sum += i;

Console.WriteLine(sum);

}

}

pic

复制代码 代码如下:

using System;

class Account

{

private double balance = 0; //字段

public double Balance //属性

{

get { return balance; }

set { balance = value;}

}

/*=============================================================

* 我们可以通过修改get、set方法达到控制存取的目的。

* 例如:

*

* 1)只读属性

* public double Balance //属性

* {

* get { return balance; }

* set { }

* }

*

* 2)读写控制

* public double Balance

* {

* get

* {

* if(Console.ReadLine()=="1234")

* return balance;

* else

* return -9999999;

* }

* set { }

* }

* =============================================================

*/

public void Deposit(double n)

{ this.balance += n; }

public void WithDraw(double n)

{ this.balance -= n; }

}

class Client

{

public static void Main()

{

Account a = new Account();

a.Balance = 1000; // 可以读写属性,因为属性Balance是public型的

//a.balance = 1000; //不可以读写字段,因为字段balance是private型的

a.WithDraw(500);

a.Deposit(2000);

Console.WriteLine(a.Balance);

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类