NET学习之路(一)--C#方法

方法:

         方法的作用是实现 代码的封装,重用:代码单独的块

                   10个例子,每个例子单独分出来作为一个代码块,Main方法中分别调用

View Code
class Program

{

//目前Main只能调用静态方法

static void Main(string[] args)

{

//调用

//Add();



//调用:可能输出,可能写入数据库

//double re = GetSquare();

//Console.WriteLine(re);



//调用带有参数的计算累加值的方法

//int result = GetTotal("10");//实参

//Console.WriteLine(result);



//调用1:半径3

//double d1 = GetArea(3, true);

//Console.WriteLine(d1);

//调用2 :直径6

//double d2 = GetArea(6,false);

//Console.WriteLine(d2);



//调用:参数作为值传递

/*int k = 12;

Console.WriteLine(k);//12



Method1(k);//值传递的方法

Console.WriteLine(k);//12



Method2(ref k);//引用传递

Console.WriteLine(k);//13
*/



/*int x = 10;

int y = 99;

Swap(ref x,ref y);

Console.WriteLine(x);//99

Console.WriteLine(y);//10



int n = 7;

int n1;

int result = Method3(n, out n1);

Console.WriteLine(result);

Console.WriteLine(n1);
*/



/*

//使用框架提供的带有out参数的方法

Console.WriteLine("请录入一个整数:");

string str = Console.ReadLine();



//检查录入的是不是可以被转换为整数:可以,算平方并输出;否则提示

int data;//承载如果可以转换,转换后的结果

bool isData = int.TryParse(str,out data);

if (isData)

{

int r = data * data;

Console.WriteLine(r);

}

else

Console.WriteLine("错误,请...");
*/



/*int r1 = AddMethod(12, 23);

Console.WriteLine(r1);



string r2 = AddMethod("aa", "bb");

Console.WriteLine(r2);
*/



/*

int n1 = 122;

int n2 = 344;

int r1 = AddMethod(n1,n2);

//字符串的拼接

Console.WriteLine(n1 + "与" + n2 + "的和为" + r1);//12与34的和为46

//利用WriteLine方法实现字符串的格式化

Console.WriteLine("{0}与{1}的和为{2}",n1,n2,r1);
*/



//其他的格式化

double money = 123.54;

Console.WriteLine("账户的余额为:{0:C}", money);

Console.WriteLine("格式化小数点后的位数:{0:F4}", money);

}



//方法重载:计算加(数值加法;两个字符串,串;两个字符,字符串,。。。)

static int AddMethod(int i, int j)

{

return i + j;

}

static string AddMethod(string s1, string s2)

{

return s1 + s2;

}





//方法:参数,得到数值对于2的倍数和余数

static int Method3(int n,out int more)

{

more = n % 2;//余数

return n / 2;//倍数

}





//方法:两个参数,完成将两个参数的值互换

static void Swap(ref int n1, ref int n2)

{

int temp = n1;

n1 = n2;

n2 = temp;

}



//按照引用传递

static void Method2(ref int i)

{

i++;

}



//按照值传递

static void Method1(int i)

{

i++;

}





//pi---全局变量,类作用域

const double pi = 3.1415;//方法:计算圆的周长,支持半径或者直径



static double GetLength(double r,bool isRadius)

{

//根据形参isRadius的值得到半径

double data = isRadius ? r : r / 2;



//计算返回

double result = pi * data * 2;

return result;

}



//方法:根据传入的数据计算圆的面积,支持半径或者直径

static double GetArea(double r,bool isRadius)

{

//根据形参isRadius的值得到半径

double data = isRadius ? r : r / 2;



//计算返回

double result = pi * data * data;

return result;

}





//封装方法:可适用性

static int GetTotal(string str)//形参

{

int data = Convert.ToInt32(str);

int result = (data * (data + 1)) / 2;

return result;

}



//定义一个方法:由用户录入两个数值,计算其和,显示

static void Add()//方法的签名

{

Console.WriteLine("请录入加数1");

string str1 = Console.ReadLine();

Console.WriteLine("请录入加数2");

string str2 = Console.ReadLine();



//转换并计算,显示

double d1 = Convert.ToDouble(str1);

double d2 = Convert.ToDouble(str2);

double result = d1 + d2;



Console.WriteLine("结果是:" + result);

}



//定义一个方法:由用户录入一个数值,计算平方,返回计算结果

static double GetSquare()

{

//添加代码

double result = 21.34;

return result;

}

}

 

方法的使用

         声明方法并调用(一个类中方法的签名必须唯一)

 static void MethodName(){}

MethodName();

         声明一个有返回值的方法并调用

  static 数据类型 MethodName(){}

声明一个变量 = MethodName();

         声明带有参数的方法

   static 数据类型 MethodName(形参1,形参2){}

声明一个变量 = MethodName(实参,实参); 

         变量的作用域:可以使用的范围(与其声明的位置相关):先声明后使用,局限于某个作用域

         声明全局变量(类中均可使用):放到方法外面,类里面

 

      为方法传递参数:

                   值传递:默认情况下的传递方式,将实际参数的值拷贝一份,赋值给形参---复印

 

                   引用:解决特殊问题----ref

 

                   输出方向:返回多个值---out,比如bool canConvert = int.TryParse("1221",out result)

Ref关键字

static intAddOne(ref int x)

{

x++;

return x;

}

static void Main( )

{

int k = 6;

inty = AddOne(ref k);

Console.WriteLine(k);

Console.WriteLine(y);

}

 

Out关键字

static void AddOne(out int x)

{

x = 6;

x++;

}

static void Main( )

{

int k;

AddOne(out k);

Console.WriteLine(k);

}

方法的重载

         方法签名:方法的名称+参数(个数、数据类型)---唯一

                   返回类型和参数的名称不作为判断标准

 

         只要签名是唯一的,方法合法

         签名确实唯一,但是名称重复且参数不同----方法的重载,解决不同类型的参数的问题

 

使用框架提供的那些重载的方法:WriteLine 有19个重载.

//方法重载示例
class OverloadingExample

{

static int Add(int a, int b)

{

return a + b;

}

static int Add(int a, int b, int c)

{

return a + b + c;

}

static void Main( )

{

Console.WriteLine(Add(1,2) + Add(1,2,3));

}

}

 

字符串的格式化

         {index}--占位符

         {index:标志}--标志决定显示的效果--0:C   0:f4

                                     {0:yyyy/mm/dd}

Console.WriteLine("输出为:{0:c}", 3025);

输出为:¥3,025.00

 

数学方法:Math.方法()

 

递归方法(了解):方法的内部调用方法本身----递归的规律,结束的条件

         阶乘:F(n) = 1*2*3*....*n = n * n-1的阶乘=n*F(n-1)

                   0! = 1   1! = 1

         递归实现的,效率较差,适用于解决特殊问题,大多数情况下用循环替代

//递归实现阶乘的例子
static void Main(string[] args)

{

Console.WriteLine(digui (3));

Console.Read();

}

//递归实现s的阶乘

static int digui(int s)

{

if (s < 1)

{

return 1;

}

return s * digui(s - 1);

}



 

posted @ 2012-04-08 13:48  ``炯``  阅读(241)  评论(0)    收藏  举报