1、随机数:
生成设备ID:为公司购买的3台不同型号的计算机进行编号,编号的规则是“计算机型号 + 4位随即号”,编号完毕后,输出每台计算机的信息
static void Main(string[] args)
{
Random random = new Random();//随机数对象
for (int i = 0; i < 20; i++)
{
int result = random.Next(1, 10);//返回0-9的整数 random.NextBytes、random.NextDouble
//随机数:包含下限、不包含上限
Console.WriteLine(result);
}
Console.ReadLine();
}
2、构造方法(函数)
【创建一个程序员类】
namespace demo13
{
/// <summary>
/// 程序员类
/// </summary>
public class SE
{
//当显示的编写一个构造方法的时候,默认无参构造方法自动销毁
public SE() { }//为了防止main()方法中创建的se1 对象报错,写一个无参构造方法,这样SE()中放不放代码就都可以了
public SE(string name)//定义带参数的构造方法
{
this.Name = name;
}
public string Name { get; set; }="匿名";
/// <summary>
/// 普通方法
/// </summary>
public void Writer()
{
Console.WriteLine($"{this.Name}正在写代码!");
}
}
}
【2】在main()中调用
SE se1 = new SE();//创建对象,默认调用了无参构造方法
SE se2 = new SE("张三");
se1.Writer();//普通方法需要手动调用
【为什么要用构造方法】通常用于初始化信息
构造方法中可以调用其他的方法,也可以写逻辑代码
public class SE
{
public SE() { }
public SE(string name,int pop)
{
this.Name = name;
this.Pop = pop;
}
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }="匿名";
/// <summary>
/// 人气值
/// </summary>
public int Pop { get; set; }
}
//命名参数
SE se3 = new SE("李四", 99);
SE se4 = new SE(name: "王五", pop : 50);
SE se6 = new SE();
se6.Name = "吴七";
se6.Pop = 86;
//初始化器
SE se5 = new SE() { Name = "赵六", Pop = 70 };
【构造方法的语法特点】方法名必须与类名相同 ;没有返回值类型
3、方法重载
static void Main(string[] args)
{
//方法重载(构造方法、普通方法)
//定义:在同一个类中,方法名称相同,参数的个数或者类型不同,称为方法的重载
//好处:调用方便
Console.WriteLine(1);
Console.WriteLine(25.21);
Console.WriteLine("abc");
Console.WriteLine('a');
}
【案例】
实现公司不同级别员工的工资计算方法
项目经理PM:基础工资+项目奖金+分红
程序员SE:基础工资+考核工资
//创建一个程序员类SE
namespace demo13_2
{
public class SE
{
public SE() { }
public SE(string name, int age, int pop, int empno)
{
this.Name = name;
this.Age = age;
this.Pop = pop;
this.EmpNo = empno;
}
/// <summary>
/// 支付工资使用
/// </summary>
/// <param name="name"></param>
/// <param name="basePay"></param>
/// <param name="meritPay"></param>
public SE(string name,float basePay,float meritPay)
{
this.Name = name;
this.BasePay = basePay;
this.MeritPay = meritPay;
}
public string Name { get; set; }
public int Age { get; set; }
/// <summary>
/// 人气值
/// </summary>
public int Pop { get; set; }
/// <summary>
/// 员工编号
/// </summary>
public int EmpNo { get; set; }
/// <summary>
/// 基本工资
/// </summary>
public float BasePay { get; set; }
/// <summary>
/// 绩效工资
/// </summary>
public float MeritPay { get; set; }
public void SayHi()
{
Console.WriteLine($"大家好!我是{this.Name},今年{this.Age}岁,工号是{this.EmpNo},我的人气值高达{this.Pop}");
}
public void SayHi(string caiyi)
{
Console.WriteLine($"大家好,我叫{this.Name},我来给大家表演{caiyi}");
}
}
}
//创建项目经理类PM
namespace demo13_2
{
public class PM
{
public PM() { }
public PM(string name,int age,int manageyear)
{
this.Name = name;
this.Age = age;
this.ManageYear = manageyear;
}
/// <summary>
/// 支付工资使用
/// </summary>
/// <param name="name"></param>
/// <param name="basePay"></param>
/// <param name="prize"></param>
/// <param name="bouns"></param>
public PM(string name,float basePay,float prize,float bouns)
{
this.Name = name;
this.BasePay = basePay;
this.Prize = prize;
this.Bouns = bouns;
}
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
/// <summary>
/// 项目管理经验年限
/// </summary>
public int ManageYear { get; set; }
/// <summary>
/// 基本工资
/// </summary>
public float BasePay { get; set; }
/// <summary>
/// 项目奖金
/// </summary>
public float Prize { get; set; }
/// <summary>
/// 分红
/// </summary>
public float Bouns { get; set; }
/// <summary>
/// 项目经理打招呼
/// </summary>
public void SayHi()
{
Console.WriteLine($"大家好!我是{this.Name},今年{this.Age}岁,项目管理经验{this.ManageYear}年");
}
}
}
//创建一个静态结算类
namespace demo13_2
{
static class CompSalary
{
/// <summary>
///支付工资(项目经理)
/// </summary>
/// <param name="pm"></param>
public static float Pay(PM pm)
{
return pm.BasePay + pm.Prize + pm.Bouns;
}
/// <summary>
/// 支付工资(程序员)
/// </summary>
/// <param name="se"></param>
public static float Pay(SE se)
{
return se.BasePay + se.MeritPay;
}
}
}
【注】静态类中必须全是静态成员,否则会报错
//在main()方法中调用
namespace demo13_2
{
class Program
{
static void Main(string[] args)
{
SE se1 = new SE("lily", 21, 99, 1001);
se1.SayHi();
se1.SayHi("弹钢琴");
//简单方法的多态实现
//CompSalary compSalary = new CompSalary();//由于类CompSalary是静态类,所以不需要重新创建对象
SE se2 = new SE("mary", 5000, 2000);
float money1 = CompSalary.Pay(se2);
Console.WriteLine($"程序员{se2.Name}的工资结算为{money1}");
PM pm1 = new PM("john", 5000, 3000, 4000);
Console.WriteLine($"项目经理{pm1.Name}的工资结算为{CompSalary.Pay(pm1)}");
Console.Read();
}
}
}
结果为: