习题-6静态成员
一、概念题
1.什么是静态成员
被static修饰的成员,叫做静态成员。静态成员是属于类的。通过类名直接访问。
- 当类第一次被访问的时候,就会将这个类下面的所有的静态成员创建在内存当中。
- 静态成员既不在栈也不在堆中。创建在静态存储区。
- 静态成员只创建一次,在类第一次被访问的时候创建。
- 静态成员一旦被创建在静态存储区,那么就不会被回收,直到程序结束。
class Person { //静态成员 public static int Age; //实例成员 public string Name; } class Program { static void Main(string[] args) { //静态成员属于类,直接通过 类名.静态成员 来访问 int age = Person.Age; //实例成员属于对象,需要通过 对象名.实例成员 来访问 Person p = new Person(); p.Name = "Jack"; } }
2.什么是方法重载
在面向对象的语言中,允许我们在同一个类中定义多个方法名相同、参数列表(参数类型,参数个数)不同的方法,这样的形式我们称为方法重载。调用时编译器会根据实际传入参数的形式,选择与其匹配的方法执行。
二、程序设计
设计计算器类,实现加法和减法功能。
要求:
参与计算的操作数可以是两个int;两个double,两个float
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WinFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { cbOperater.SelectedIndex = 0; cbOperater.Width = 49; cbOperater.Height = 28; } private void btCalc_Click(object sender, EventArgs e) { int op1Int; int op2Int; float op1Float; float op2Float; double op1Double; double op2Double; decimal op1Decimal; decimal op2Decimal; if (tb1.Text.Trim() == "" || tb2.Text.Trim() == "") { MessageBox.Show("请输入数字!"); } else { if (int.TryParse(tb1.Text, out op1Int) & int.TryParse(tb2.Text, out op2Int)) { switch (cbOperater.SelectedItem.ToString()) { case "+": { lblResult.Text = Calc.Add(op1Int, op2Int).ToString(); } break; case "-": { lblResult.Text = Calc.Sub(op1Int, op2Int).ToString(); } break; case "*": { lblResult.Text = Calc.Cheng(op1Int, op2Int).ToString(); } break; case "/": { lblResult.Text = Calc.Chu(op1Int, op2Int).ToString(); } break; default: { MessageBox.Show("请选择合理计算方式"); } break; } } else { if (float.TryParse(tb1.Text, out op1Float) & float.TryParse(tb2.Text, out op2Float)) { switch (cbOperater.SelectedItem.ToString()) { case "+": { lblResult.Text = Calc.Add(op1Float, op2Float).ToString(); } break; case "-": { lblResult.Text = Calc.Sub(op1Float, op2Float).ToString(); } break; case "*": { lblResult.Text = Calc.Cheng(op1Float, op2Float).ToString(); } break; case "/": { lblResult.Text = Calc.Chu(op1Float, op2Float).ToString(); } break; default: { MessageBox.Show("请选择合理计算方式"); } break; } } else { if (double.TryParse(tb1.Text, out op1Double) & double.TryParse(tb2.Text, out op2Double)) { switch (cbOperater.SelectedItem.ToString()) { case "+": { lblResult.Text = Calc.Add(op1Double, op2Double).ToString(); } break; case "-": { lblResult.Text = Calc.Sub(op1Double, op2Double).ToString(); } break; case "*": { lblResult.Text = Calc.Cheng(op1Double, op2Double).ToString(); } break; case "/": { lblResult.Text = Calc.Chu(op1Double, op2Double).ToString(); } break; default: { MessageBox.Show("请选择合理计算方式"); } break; } } else { if (decimal.TryParse(tb1.Text, out op1Decimal) & decimal.TryParse(tb2.Text, out op2Decimal)) { switch (cbOperater.SelectedItem.ToString()) { case "+": { lblResult.Text = Calc.Add(op1Decimal, op2Decimal).ToString(); } break; case "-": { lblResult.Text = Calc.Sub(op1Decimal, op2Decimal).ToString(); } break; case "*": { lblResult.Text = Calc.Cheng(op1Decimal, op2Decimal).ToString(); } break; case "/": { lblResult.Text = Calc.Chu(op1Decimal, op2Decimal).ToString(); } break; default: { MessageBox.Show("请选择合理计算方式"); } break; } } else { MessageBox.Show("数据类型不统一!"); } } } } } } private void label1_Click(object sender, EventArgs e) { } private void tb2_TextChanged(object sender, EventArgs e) { } private void cbOperater_SelectedIndexChanged(object sender, EventArgs e) { } private void timer1_Tick(object sender, EventArgs e) { Random ran = new Random(); tb_show.Text += "恭喜用户"+ ran.Next(100, 999).ToString()+"***"+ ran.Next(100, 999).ToString()+"中奖"; } } }