一、语法结构
1、顺序结构
代码按照先后顺序一行一行往下执行
2、分支结构
if()
{}
else
{}
3、选择结构
if()
{}
else if()
{}
else if()
{}
switch(type)
{ case"a":break;
case"b":break;
default:break;
}
switch-case结构可以简化,代码如下:
switch(type)
{ case"a":fun1();break;
case"b":fun1();break;
case"c":fun2();break;
default:fun3();break;
}
//可简化为
switch(type)
{ case"a":
case"b":fun1();break;
case"c":fun2();break;
default:fun3();break;
}
4、循环结构
//一般用于循环次数明确的情况
for()
{}
//一般用于遍历某一集合
foreach()
{}
//一般用于循环次数不确定的情况,执行次数>=0
while()
{}
//一般用于循环次数不确定的情况,不过执行次数>=1,注意while后边的分号
do{}while();
二、方法
1、out
在调用方法之前不一定对其赋值,在被调用的方法中一定要对out参数进行赋值
static void Main(string[] args)
{
#region out
int num1 = 3;//此处不对num1赋值也行
Func func = new Func();
func.GetLength("abcde", out num1);
Console.WriteLine("num1=" + num1);//输出num1=5
#endregion
}
class Func
{
public void GetLength(string str,out int num1)
{
num1 = str.Length;//在方法体中一定要对num1进行赋值
}
}
2、ref
在调用方法之前一定要对ref参数进行赋值,在方法中不一定对其赋值
static void Main(string[] args)
{
#region ref
int numOne = 12;
int numTwo = 8;
Func func = new Func();
func.Change(ref numOne, ref numTwo);
//输出numOne=8,numTwo=12,此时numOne与numTwo已经互换
//若此处用两个out参数则不能实现互换
Console.WriteLine("numOne={0},numTwo={1}", numOne, numTwo);
#endregion
}
class Func
{
public void Change(ref int numOne, ref int numTwo)
{
int temp = numTwo;
numTwo = numOne;
numOne = temp;
}
}
3、params
当方法有多个参数的时候,params参数必须是最后一个参数
static void Main(string[] args)
{
Func func = new Func();
string result = func.UseParams("first", "second", "third");
string result2 = func.UseParams("abc", "AA", "BB","CC","DD");
//输出result=firstsecond
Console.WriteLine("result=" + result);
//输出result2=abcAA
Console.WriteLine("result2=" + result2);
}
class Func
{
public string UseParams(params string[] strArray)
{
return strArray[0] + strArray[1];
}
}
4、重载
同一类中方法名相同参数类型或个数不相同(与返回值无关),这样的多个方法叫做方法重载
例如:
class MyClass
{
//以下两个方法属于重载
public void Compare(int num1,int num2,int num3)
{......}
public void Compare(int num1,int num2)
{......}
//以下两个方法不属于重载
public void Compare(int num1,int num2)
{......}
public bool Compare(int num1,int num2)
{......}
}
5、递归
递归是很重要的思想,递归结束点叫做递归出口
利用递归求n的阶乘:
static void Main(string[] args)
{
Func func = new Func();
int result = func.GetResult(5);
//输出result=120
Console.WriteLine("result=" + result);
}
public int GetResult(int num)
{
if(num>1)
return num*GetResult(num-1);
//当num=1时递归不再继续,因此num=1为递归出口
else
return num;
}
三、关键字
1、break
在循环结构中跳出本层循环:
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(j==3) break;
Console.WriteLine("j="+j);
}
}
运行结果图如下:
跳出switch-case结构:
switch(type)
{ case"a":fun();break;
case"b":fun1();break;
case"c":fun2();break;
default:fun3();break;
}
2、continue
立即结束本层本次循环,如果循环未结束则继续执行本层下一次循环
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(j==3) continue;
Console.WriteLine("j="+j);
}
}
运行结果截图如下:
3、return
在有返回值的方法中返回所需返回值
public string GetString()
{
return "guoguo";
}
在没有返回值的方法中,return可以立即结束该方法
//输出one two
public void Show()
{
Console.WriteLine("one");
Console.WriteLine("two");
return;
Console.WriteLine("three");
}
运行结果截图如下: