方法定义规范
访问修饰符 返回值类型 方法名{参数1,参数2}
{
//这里编写方法的主体(功能实现的具体过程)
return 返回值;//如果没有返回值,则不需要写该语句
}
方法定义注意事项
1,访问修饰符:访问修饰符表示方法的可访级别。修饰符可以省略,默认private,可以根据需要定义为public。
2,返回值类型:方法执行后,如果不返回任何数据,使用void表示即可。如果返回数据,则该数据的类型,就是返回值的类型,可以是int,double、string、bool等。
3方法名:一般是’动词’或’动宾短语’,采用Pascal命名法。
4,参数列表:方法参数根据需要添加,也可以省略。参数名要求以’类型’、参数名 、的形式,使用逗号分隔。
5,方法的主体:表示方法执行的具体过程,根据需要编写。
6,方法的返回值:方法返回数据的时候,最后使用return返回,return后面不应该有任何语句。
方法应用
1没有参数的方法。
2带参数的方法。
3没有返回值的方法。
public int StudentId { get; set; }
public string StudentName { get; set; }
public int Age { get; set; }
public DateTime Brithday { get; set; }
/// <summary>
/// 没有参数的方法
/// </summary>
/// <returns></returns>
public string GetStudent()
{
string Info = string.Format("学号;{0},姓名:{1},年龄{2}", StudentId, StudentName, Age);
return Info;
}
/// <summary>
/// 带参的方法
/// </summary>
/// <param name="studentId"></param>
/// <param name="studentName"></param>
/// <param name="age"></param>
/// <param name="brithday"></param>
/// <returns></returns>
public string GetStudentInfo(int studentId, string studentName, int age, DateTime brithday)
{
this.Brithday = brithday;
string Info = string.Format("学号:{0},姓名:{1},年龄{2}", studentId, studentName,age);
return Info;
}
/// <summary>
/// 没有返回值的方法
/// </summary>
public void ShowStudentInfo()
{
string Info = string.Format("学号:{0},姓名:{1},年龄:{2}", StudentId, StudentName, Age);
Console.WriteLine(Info);
}
}
方法的调用
static void Main(string[] args)
{
//调用不带参数方法
Student objStudent = new Student();
objStudent.StudentId = 1005;
objStudent.StudentName = "陈乔斯";
objStudent.Age = 29;
string info = objStudent.GetStudent();
Console.WriteLine(info);
//调用带参数方法
Student objStudent1 = new Student();
string Info = objStudent1.GetStudentInfo(1006, "张世界", 28, Convert.ToDateTime("1999-9-9"));
Console.WriteLine(Info);
//调用没有返回值的方法
Student objStudent2 = new Student();
objStudent2.StudentId = 1007;
objStudent2.StudentName = "刘流";
objStudent2.Age = 27;
objStudent2.ShowStudentInfo();
}
常见错误
忘记返回值
返回值类型和数据定义类型不一致
变量在使用中超出作用域范围
变量的分类及其作用域总结
在方法内的变量,称为’局部变量’,只能在该方法内部使用。
在方法外部,类内部的变量称为’成员变量’,可以在当前类的内部使用,或外部使用。
方法的重载
问题的引出:
实现一个简单的计算器加减法,需要6个方法,程序调用在选择合适自己的方法时会感觉很棘手。
方法的编写非常麻烦。
因此需要有新的解决方案。
这时需要方法重载:
减少类的对外接口,便于用户使用
方法的名称必须一样,方法的参数个数或者类型不一样。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 方法与方法重载
{
class Calculator
{
public int Add(int a ,int b)
{
return a + b;
}
public double Add(double a,double b)
{
return a + b;
}
public double Add(int a ,double b)
{
return Convert.ToDouble(a) + b;
}
public int Sub(int a ,int b)
{
return a - b;
}
public double Sub(int a,double b)
{
return Convert.ToDouble(a) - b;
}
public double Sub(double a ,double b)
{
return a - b;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 方法与方法重载
{
class Program
{
static void Main(string[] args)
{
Calculator objCal = new Calculator();
double result = objCal.Add(10,20.5);
int result1 = objCal.Add(10, 30);
double result2 = objCal.Add(10.5, 20.8);
Console.WriteLine("result={0}\n result1={1} \n result={2}",result,result1,result2);
}
}
}
静态方法
静态成员使用提示
静态成员在程序中运行时被调入内存中,并且在系统未关闭之前不会被GC回收。
类的成员使用非常频繁时候,可以考虑使用static修饰,但不要使用过多。
静态方法也可以重载。
静态成员不能直接调用实例成员。