学习C#的第六天
-
方法 补充
- 方法的重载 - 构成条件: - 在同一个类中 - 方法名相同 - 参数列表不同
namespace test3
{
public class Program
{
//方法的重载
//写在同一类中
//求圆面积
static void WriteArea(double radius)
{
double area = System.Math.PI * radius * radius;
Console.WriteLine("圆的面积是:{0}", area);
}
//求矩形面积
static void WriteArea(double width, double height)
{
double area = width * height;
Console.WriteLine("矩形的面积是:{0}", area);
}
//求三角形面积
static void WriteArea(double a, double b, double c)
{
double p = (a + b + c) / 2;
double area = System.Math.Sqrt(p * (p - a) * (p - b) * (p - c));
Console.WriteLine("三角形的面积是: {0}", area);
}
static void Main(string[] args)
{
//利用方法重载调用方法
WriteArea(3, 4, 5);
WriteArea(25);
WriteArea(10, 20);
Console.ReadKey();
}
}
- 结构
namespace test3
{
public struct StaffInfo {
//将变量声明为public用于在Main方法中使用
public string name;
public int age;
public string dep;
public char gender;
}
public class Program
{
static void Main(string[] args)
{
StaffInfo zs = new StaffInfo();
zs.name = "张三";
zs.age = 25;
zs.gender = '男'
zs.dep = "人力部";
Console.WriteLine("我叫{0},{1}岁,{2},在{3}工作", zs.name, zs.age, zs.gender, zs.dep);
Console.ReadKey();
}
}
}
- 枚举
namespace test3
{
//枚举可以在结构中被调用
public enum Gender
{
男,
女
}
public enum Week
{
星期一,
星期二,
星期三,
星期四,
星期五,
周六 = 10,
周日
}
public class Program
{
static void Main(string[] args)
{
Gender zsgender = Gender.男;
Console.WriteLine("我是{0}生", zsgender);
Week day = Week.周日;
Console.WriteLine("今天是{0},可以摸摸鱼", day);
//将枚举转换为整型
Console.WriteLine((int)zsgender);
//将整型转换为枚举
int a = 10;
Console.WriteLine((Week)a);
//将枚举转换为字符串 用ToString() 和 Convert.ToString()
Console.WriteLine(zsgender.ToString());
//将字符串转换为枚举
//如果需要转换的字符不是数组,而且枚举值中不含有该值,就会报异常
//如果需要转换的字符串是数字,且枚举值中不包含该值,不会报异常
string str = "星期五";
Console.WriteLine((Week)Enum.Parse(typeof(Week), str));
Console.ReadKey();
}
}
}
- 类 与 属性
- 类法中可以存放字段,可以存放属性,可以存放方法
- 属性可以保护字段,对字段的取值与赋值进行限定
namespace test4
{
//类法中可以存放字段,可以存放属性,可以存放方法
class Clerk
{
private string _name;
public string Name
{
get; //返回属性值
set; //用于分配新值 这是自动属性
}
private char _gender;
//属性初始化
public char Gender
{
get //get用于对取值进行限定
{
if (_gender != '男' || _gender != '女') _gender = '男';
return _gender;
}
set //set对赋值进行限定
{ _gender = value; }
}
private int _age;
//将get 与 set 称为访问器
public int Age
{
get { return _age; }
set
{
if (value < 0 || value > 120) value = 0;
_age = value;
}
}
private string _dep;
public string Dep
{
get;
set;
}
public int _workYears;
public int Workyears
{
get;
set;
}
public void Write()
{
Console.WriteLine("{0},{1},{2}岁,在{3}任职了{4}年", this.Name, this.Gender, this.Age, this.Dep, this.Workyears);
}
}
-
构造函数 和 析构函数
- 构造函数 - 构造函数没有返回值,不能写void,必须public - 构造函数必须跟类名一样 - 构造函数是可以重载的
public Clerk(string name, Gender gender, int age, string dep)
{
// 在Main方法中实体化
this.Name = name;
this.Gender = gender;
this.Age = age;
this.Dep = dep;
}
- 析构函数