02---Net基础加强

将普通日期格式:“2014年7月8日”转换成汉字日期格式:“二零一四年七月八日”。(暂时不考虑10日,13日,23日)

   class Program
    {
        static void Main(string[] args)
        {
            string date = "2014年7月8日";
            date = ConvertDate(date);
            Console.WriteLine(date);
            Console.ReadKey();
        }

        private static string ConvertDate(string date)  //字符串具有不可变性,不能直接修改字符串
        {
            //将字符串转换成一个真正的char数组
            char[] chs = date.ToCharArray();
            for (int i = 0; i < date.Length; i++)
            {
                switch (chs[i])
                {
                    case 0:
                        chs[i] = ;
                        break;
                    case 1:
                        chs[i] = ;
                        break;
                    case 2:
                        chs[i] = ;
                        break;
                    case 3:
                        chs[i] = ;
                        break;
                    case 4:
                        chs[i] = ;
                        break;
                    case 5:
                        chs[i] = ;
                        break;
                    case 6:
                        chs[i] = ;
                        break;
                    case 7:
                        chs[i] = ;
                        break;
                    case 8:
                        chs[i] = ;
                        break;
                    case 9:
                        chs[i] = ;
                        break;
                }
            }
            //把char数组转换成字符串
            return new string(chs);
        }
    }

创建一个Person类,属性:姓名、性别、年龄;方法:SayHi() 。

 class Person
    {
        private string _name;
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }

        public bool Gender { get; set; }
        public int Age { get; set; }

        public virtual void SayHi()  //加上virtual,子类才能重写它
        {
            Console.WriteLine("Hi!!!!!!");
        }
    }

再创建一个Employee类继承Person类,扩展属性Salary,重写SayHi方法。

 class Employee:Person
    {
        public decimal salary{get;set;}

        public override void SayHi()
        {
            Console.WriteLine("重写了子类中的方法"); ;
        }
    }

请编写一个类:ItcastClass,该类中有一个私有字段_names.数据类型为字符串数组,数组长度为5,并有5个默认的姓名。要求:为ItcastClass编写一个索引器,要求该索引器能够通过下标访问_names中的内容。

  class ItcastClass
    {
        private string[] _names = { "叶长种", "王少伟", "杨中科", "苏坤", "科比" };

        public string this[int index]  //索引器
        {
            get
            {
                return _names[index];
            }

            set
            {
                _names[index] = value;
            }      
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ItcastClass itcast = new ItcastClass();
            //Console.WriteLine(itcast._names[0]);//没有索引器的情况下得这样写!
            Console.WriteLine(itcast[0]);
            Console.WriteLine(itcast[3]);
            Console.ReadKey();
        }
    }

属性和索引

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02属性和索引
{
    class Person
    {

        private string _name;
        public string Name
        {
            get {return _name ;}
            set { _name = value; }
        }

        //属性就是一个字段和两个方法
        public int Age
        {
            get;
            set;
        }
    }

    class MyClass
    {
        public string Name
        {
            get;
            set;
        }
        public int Age
        {
            get;
            set;
        }
        public string Email
        {
            get;
            set;
        }

        //public string Item//在增加的时候不能用Item这个词   因为在索引器中它自动生成了Item属性
        //{
        //    get;
        //    set;
        //}

        public string this[int index]
        {
            get
            {
                string result = "";
                switch (index)
                { 
                    case 0:
                        result=this.Name;
                        break;
                    case 1:
                        result = this.Age.ToString();
                        break;
                    case 2:
                        result = this.Email;
                        break;
                }
                return result;
            }
        }

        public string this[string key]   //重载
        {
            get
            {
                string result = "";
                switch (key)
                {
                    case "name":
                        result = this.Name;
                        break;
                    case "age":
                        result = this.Age.ToString();
                        break;
                    case "email":
                        result = this.Email;
                        break;
                }
                return result;
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02属性和索引
{
    class Program
    {
        static void Main(string[] args)
        {
            //MyClass mc = new MyClass();
            //mc.Name = "叶长重";
            //mc.Age = 18;
            //mc.Email = "[email protected]";
            //Console.WriteLine(mc.Name);
            //Console.WriteLine(mc.Age);
            //Console.WriteLine(mc.Email);
            //Console.ReadKey();

            MyClass mc = new MyClass();
            mc.Name = "叶长重";
            mc.Age = 18;
            mc.Email = "[email protected]";
            Console.WriteLine(mc[0]);
            Console.WriteLine(mc[1]);
            Console.WriteLine(mc[2]);

            Console.WriteLine(mc["name"]);
            Console.WriteLine(mc["age"]);
            Console.WriteLine(mc["email"]);

            Console.ReadKey();
        }
    }
}

编程遍历WinForm窗体上所有TextBox控件并给它赋值为“叶长种”。

  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //控件继承Control类
            foreach (Control item in this.Controls)
            {
                //判断当前控件是否为文本框
                if (item is TextBox)
                {
                    ((TextBox)item).Text = "叶长种";
                }
            }
        }
    }

使用WinForm窗体,制作一个简单的计算器,默认值为“请选择”。要求具有+、-、*、/功能! 

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.cboCaoZuoFu.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //校验用户选择的“操作符”
            if (cboCaoZuoFu.SelectedIndex > 0)
            {
                int n1 = Convert.ToInt32(txtNumber1.Text.Trim());
                int n2 = Convert.ToInt32(txtNumber2.Text.Trim());
                //int n2 = int.Parse(textBox2.Text.Trim());//这个也可以
                switch (cboCaoZuoFu.Text)
                {
                    case "+":
                        lblResult.Text = (n1 + n2).ToString();
                        break;
                    case "-":
                        lblResult.Text = (n1 - n2).ToString();
                        break;
                    case "*":
                        lblResult.Text = (n1 * n2).ToString();
                        break;
                    case "/":
                        lblResult.Text = (n1 / n2).ToString();
                        break;
                    default:
                        break;
                }
            }
            else
            {
                MessageBox.Show("请选择操作符");
            }
        }
    }

随机点名器:

     private void button2_Click(object sender, EventArgs e)
        {
            Random r = new Random();
            MessageBox.Show(r.Next(1,51).ToString());
        }

什么是方法重载。(方法重载1.方法名必须一致。2,方法参数列表不同)

 请将字符串数组(“中国”,“美国”,“巴西”,“澳大利亚”,“加拿大”)中的内容反转,然后输出反转后的数组,不能用数组的Reverse()方法。

 class Program
    {
        static void Main(string[] args)
        {
            string[] names = { "中国", "美国", "巴西", "澳大利亚", "加拿大" };
        
            //Array.Reverse(names);

            ReverseArray(names);
            for (int i = 0; i < names.Length; i++)  //快捷键 打上for再按Tab键
            {
                Console.WriteLine(names[i]);
            }
            Console.ReadKey();
        }

        private static void ReverseArray(string[] names) //数组本身就是引用类型,不需要返回值
        {
            for (int i = 0; i < names.Length / 2; i++)
            {
                string temp = names[i];
                names[i] = names[names.Length - 1 - i];
                names[names.Length - 1 - i] = temp;
            }
        }
    }

 .net程序基本编写、执行流程(c#) 

          1>编写c#代码,保存为.cs文件。
          2>通过csc.exe程序来将.cs文件编译为.net程序集(.exe或.dll)。此时的exe或dll并不是机器码(cpu不可理解)。【>csc /out:c:\a.exe c:\program.cs】
          3>程序运行时通过JIT编译(Just In Time)即时编译,将程序集编译为cpu能理解的机器码,这时cpu才能执行。(这个编译过程会与当前机器有关(根据当前机器的内存、cpu等))。ngen.exe  
面向对象(OO) 
          什么是面向对象?一种分析问题的方式(增强了程序的可扩展性)。
          面向对象三大特性:封装、继承、多态。
          什么是类?什么是对象?类和对象的区别?如何写一个汽车类?
          类是模具,创建对象的模具,抽象的。
          类是一种数据类型,用户自定义的数据类型
          类组成:字段、属性、方法、构造函数等
          对象是具体的,是类的具体实例。对象具有属性(特征)和方法(行为)
          类中包含了数据(用字段表示)与行为(用方法(函数、功能)表示,方法为一块具有名称的代码)  (先用类后有对象)

添加一个教师类和一个学生类:

 public class Teacher
    {
        //构造函数特点:1、函数名和类名完全一样 2、不能有返回值,哪怕是void 3、一般访问修饰符为public
        public Teacher()
        {

        }
        //构造函数重载 
        public Teacher(string name)
        {
            this.Name = name;
        }

        public Teacher(string name, int Age)
        {
            this.Name = name;
            this.Age = Age;
        }


        public string Name { get; set; }
        public int Age { get; set; }
        public void Teach()
        {
            Console.WriteLine("上课。。。");
        }
    }
 class Student
    {
        public string Name { get; set; }
        public string SId { get; set; }
        public void shangke()
        {
            Console.WriteLine("上课。。。");
        }
    }
  class Program
    {
        static void Main(string[] args)
        {
            //当写好一个类以后就会有一个默认的无参的构造函数。
            Teacher t = new Teacher();
        }
    }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。