C#接口学习1

来源:互联网 发布:独创科技网络 编辑:程序博客网 时间:2024/05/29 17:52

接口是一种用于定义的协议,他描述可属于任何类或结构的一组相关行为,它可以看成是实现一组类的模板。接口可由方法、属性、时间和索引器这四种成员类型的任何组合构成,但是不能包含字段。

下面为C#开发实战1200例中实例117,该例子使用接口实现了不同类中相同行为或者方法的统一。

该例子通过以下不走实现了自动语言匹配:

1、一个combox(下拉菜单)控件选择当前对话的是中国人or美国人。

2、通过检测文本框中文字是中文还是英文。

3、通过1和2是否匹配得出几条输出。(通过弹出式messagebox实现)

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace _115{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            InitializationCombox1();            comboBox1.SelectedIndex = 0;        }       public void  InitializationCombox1()       {           comboBox1.Items.Add("中国人");           comboBox1.Items.Add("美国人");       }        ///<Summary>        ///声明一个接口,用于定义Seak方法,而具体Speak方法功能的实现是在类中进行的        ///</Summary>        interface ISelectLanguage        {            void Speak(string str);        }        ///<Summary>        ///如果跟中国人对话,则说汉语        ///</Summary>        class C_SpeakChinese : ISelectLanguage        {            public void Speak(string str)            {                 MessageBox.Show("您对中国友人说:"+ str,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);            }        }        ///<Summary>        //如果跟美国人对话,则说英语        ///</Summary>        class C_SpeakEnglish : ISelectLanguage        {            public void Speak(string str)            {                MessageBox.Show("您对美国人说:" + str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);            }            }        ///<Summary>        //判断当前说的语言是汉语还是英语,英语返回false,汉语返回true        ///</Summary>        public bool CheckChinese(string str)        {            bool flag = false;            UnicodeEncoding a = new UnicodeEncoding();            byte[] b = a.GetBytes(str);            for (int i = 0; i < b.Length; i++)            {                i++;                if (b[i] != 0)                {                    flag = true;                }                else                {                    flag = false;                }            }            return flag;                }        private void button1_Click(object sender, EventArgs e)        {            if (textBox1.Text == "")            {                MessageBox.Show("不想和友人说点什么吗?", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);                return;            }            else            {                 if(comboBox1.SelectedIndex == 0)//与中国人对话                    if (CheckChinese(textBox1.Text))                    {                        ISelectLanguage interface1 = new C_SpeakChinese();                        interface1.Speak(textBox1.Text);                                        }                    else                    {                        MessageBox.Show("请和中国友人说汉语?", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);                        return;                    }                else //与美国人对话                {                    if(CheckChinese(textBox1.Text))                    {                        MessageBox.Show("请和美国友人说英语","警告", MessageBoxButtons.OK, MessageBoxIcon.Error);                        return ;                                        }                    else                    {                        ISelectLanguage Interface1 = new C_SpeakEnglish();                        Interface1.Speak(textBox1.Text);                    }                                }                        }        }    }}
class C_SpeakChinese : ISelectLanguageclass C_SpeakEnglish : ISelectLanguage

(1)分别为C_SpeakChinese和C_SpeakEnglish添加了接口ISelectLanguage,然后通过 接口访问两个类相同的Speak方法

(2)判断英文和汉语的主要差别是看

UnicodeEncoding a = new UnicodeEncoding();            byte[] b = a.GetBytes(str);
b返回的值得组成,汉字为两个不为零的数,英语一个字母的返回值为一个不为零的数和一个为0的数。

(3)comboBox添加项和设置默认值

添加项:

           comboBox1.Items.Add("中国人");           comboBox1.Items.Add("美国人");
设置默认值

comboBox1.SelectedIndex = 0;
通常上面两项操作均应该在窗口初始化时完成。

0 0