【C#】【平时作业】习题-6-静态成员

简介: 【C#】【平时作业】习题-6-静态成员

习题-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

q1.png

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()+"中奖";
        }
    }
}


相关文章
|
3月前
|
存储 C# 开发者
C#一分钟浅谈:静态成员与静态类介绍
在C#编程中,`static`关键字用于创建静态字段、方法、属性和构造函数等,这些成员属于类本身而非实例。本文从基本概念入手,详细探讨了静态成员与静态类的特点、应用场景及常见误区。通过示例代码展示了如何使用静态字段和方法,并讨论了静态类的定义及其在工具箱和常量集合中的应用。最后总结了正确使用这些特性的策略,以帮助开发者编写高效、可维护的代码。
80 11
|
7月前
|
存储 安全 编译器
《C#程序设计》期末大作业复习答案
《C#程序设计》期末大作业复习答案
【C#】【平时作业】习题-2-数据类型运算符表达式
【C#】【平时作业】习题-2-数据类型运算符表达式
102 0
【C#】【平时作业】习题-2-数据类型运算符表达式
【C#】【平时作业】习题-8-异常处理
【C#】【平时作业】习题-8-异常处理
80 0
【C#】【平时作业】习题-8-异常处理
|
存储 SQL 开发框架
【C#】【平时作业】习题-11-ADO.NET
【C#】【平时作业】习题-11-ADO.NET
118 0
【C#】【平时作业】习题-11-ADO.NET
|
存储 SQL 开发框架
【C#】【平时作业】习题-11-ADO.NET
【C#】【平时作业】习题-11-ADO.NET
85 0
【C#】【平时作业】习题-11-ADO.NET
|
存储 编译器 C#
【C#】【平时作业】习题-13-数据类型
【C#】【平时作业】习题-13-数据类型
99 0
【C#】【平时作业】习题-12-事件
【C#】【平时作业】习题-12-事件
92 0
|
自然语言处理 C# C++
【C#】【平时作业】习题-10-委托
【C#】【平时作业】习题-10-委托
122 0
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
35 3