C#使用泛型实现获取并显示员工信息

 更新时间:2024年02月21日 08:50:43   作者:wenchm  
泛型编程是一种编程方式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用,泛型是用于处理算法、数据结构的一种编程方法,本文给大家介绍了C#使用泛型实现获取并显示员工信息实例,需要的朋友可以参考下

一、关于泛型

1.泛型定义

泛型编程是一种编程方式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。泛型是用于处理算法、数据结构的一种编程方法。泛型的目标是采用广泛适用和可交互性的形式来表示算法和数据结构,以使它们能够直接用于软件构造。泛型类、结构、接口、委托和方法可以根据它们存储和操作的数据类型来进行参数化。

2.泛型与非泛型的区别

泛型能在编译时提供强大的类型检查,减少数据类型之间的显示转换、装箱操作和运行时的类型检查等。泛型类和泛型方法同时具备可重用性、类型安全和效率高等特性,这是非泛型类和非泛型方法无法具备的。

3.泛型的应用

泛型类、结构、接口、委托和方法可以根据它们存储和操作的数据类型来进行参数化。泛型通常用在集合和在集合上运行的方法中。

泛型是C#编程中一种强大的功能,它允许创建可以处理多种类型的数据的通用类、方法和函数。泛型是在C# 2.0中引入的,它提供了一种类型安全的方式,可以在不牺牲性能的情况下重用代码。

泛型的主要优点是它可以在编译时检查类型安全,避免了运行时类型转换错误。它还可以提高代码的可读性和可重用性。以下是C#中使用泛型的一些示例:

(1)泛型类:

public class MyClass<T>
{
    private T _value;
 
    public MyClass(T value)
    {
        _value = value;
    }
    
    public T GetValue()
    {
        return _value;
    }
}

(2)泛型方法:

public static T Swap<T>(ref T a, ref T b)
{
    T temp = a;
    a = b;
    b = temp;
}

(3)泛型委托:

public delegate T MyGenericDelegate<T>(T input);

(4)泛型接口:

public interface IMyGenericInterface<T>
{
    void DoSomething(T value);
}

(5)泛型约束:

public class MyClass<T> where T : struct
{
    // ...
}

在上面的示例中,T是一个类型参数,它可以在创建类、方法或函数时指定。通过使用泛型,我们可以创建可以处理不同类型的数据的通用代码,而不需要为每种类型编写特定的代码。

二、实例

本实例将使用泛型存储不同类型的数据,在实现时,首先定义一个泛型类,并在泛型类中定义多个泛型变量;然后使用这些变量记录不同类型的数据,这样就可以重复利用泛型变量来存储不同类型的数据。本实例用来通过泛型获取员工信息并显示。

// 通过泛型获取员工信息并显示
namespace _126
{
    public partial class Form1 : Form
    {
        private GroupBox? groupBox1;
        private Button? button1;
        private TextBox? textBox6;
        private TextBox? textBox5;
        private TextBox? textBox4;
        private Label? label6;
        private Label? label5;
        private Label? label4;
        private Label? label1;
        private Label? label2;
        private Label? label3;
        private TextBox? textBox1;
        private TextBox? textBox2;
        private TextBox? textBox3;
 
        public Form1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
            Load += Form1_Load;
        }
 
        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // label1
            // 
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(15, 19),
                Name = "label1",
                Size = new Size(44, 17),
                TabIndex = 1,
                Text = "编号:"
            };
            // 
            // label2
            // 
            label2 = new Label
            {
                AutoSize = true,
                Location = new Point(15, 51),
                Name = "label2",
                Size = new Size(44, 17),
                TabIndex = 2,
                Text = "性别:"
            };
            // 
            // label3
            // 
            label3 = new Label
            {
                AutoSize = true,
                Location = new Point(15, 83),
                Name = "label3",
                Size = new Size(44, 17),
                TabIndex = 3,
                Text = "生日:"
            };
            // 
            // textBox1
            // 
            textBox1 = new TextBox
            {
                Location = new Point(64, 13),
                Name = "textBox1",
                Size = new Size(100, 23),
                TabIndex = 4
            };
            // 
            // textBox2
            // 
            textBox2 = new TextBox
            {
                Location = new Point(64, 45),
                Name = "textBox2",
                Size = new Size(100, 23),
                TabIndex = 5
            };
            // 
            // textBox3
            // 
            textBox3 = new TextBox
            {
                Location = new Point(64, 77),
                Name = "textBox3",
                Size = new Size(100, 23),
                TabIndex = 6
            };
            // 
            // label4
            // 
            label4 = new Label
            {
                AutoSize = true,
                Location = new Point(173, 19),
                Name = "label4",
                Size = new Size(44, 17),
                TabIndex = 7,
                Text = "姓名:"
            };
            // 
            // label5
            // 
            label5 = new Label
            {
                AutoSize = true,
                Location = new Point(173, 51),
                Name = "label5",
                Size = new Size(44, 17),
                TabIndex = 8,
                Text = "年龄:"
            };
            // 
            // label6
            // 
            label6 = new Label
            {
                AutoSize = true,
                Location = new Point(173, 83),
                Name = "label6",
                Size = new Size(44, 17),
                TabIndex = 9,
                Text = "工资:"
            };
            // 
            // textBox4
            // 
            textBox4 = new TextBox
            {
                Location = new Point(222, 13),
                Name = "textBox4",
                Size = new Size(100, 23),
                TabIndex = 10
            };
            // 
            // textBox5
            // 
            textBox5 = new TextBox
            {
                Location = new Point(222, 45),
                Name = "textBox5",
                Size = new Size(100, 23),
                TabIndex = 11
            };
            // 
            // textBox6
            // 
            textBox6 = new TextBox
            {
                Location = new Point(222, 77),
                Name = "textBox6",
                Size = new Size(100, 23),
                TabIndex = 12
            };
            // 
            // groupBox1
            // 
            groupBox1 = new GroupBox
            {
                Location = new Point(12, 12),
                Name = "groupBox1",
                Size = new Size(335, 107),
                TabIndex = 0,
                TabStop = false,
                Text = "员工信息"
            };
            groupBox1.Controls.Add(textBox6);
            groupBox1.Controls.Add(textBox5);
            groupBox1.Controls.Add(textBox4);
            groupBox1.Controls.Add(label6);
            groupBox1.Controls.Add(label5);
            groupBox1.Controls.Add(label4);
            groupBox1.Controls.Add(label1);
            groupBox1.Controls.Add(label2);
            groupBox1.Controls.Add(label3);
            groupBox1.Controls.Add(textBox1);
            groupBox1.Controls.Add(textBox2);
            groupBox1.Controls.Add(textBox3);
            groupBox1.SuspendLayout();
 
            // 
            // button1
            // 
            button1 = new Button
            {
                Location = new Point(272, 125),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 0,
                Text = "获取",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
           
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(359, 156);
            Controls.Add(button1);
            Controls.Add(groupBox1);
            Name = "Form1";
            Text = "使用泛型存储不同类型的数据列表";
            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
 
 
        }
        /// <summary>
        /// 为泛型类中声明的字段进行赋值,存储不同类型的值
        /// 实例化泛型类对象
        /// 将泛型类中各字段的值显示在文本框中
        /// </summary>
        private void Button1_Click(object? sender, EventArgs e)
        {
            Types<object> Extecute = new()
            {
                ID = 1,
                Name = "王老师",
                Sex = "男",
                Age = 25,
                Birthday = Convert.ToDateTime("1986-06-08"),
                Salary = 1500.45F
            };
 
            textBox1!.Text = Extecute.ID.ToString();
            textBox2!.Text = Extecute.Sex.ToString();
            textBox3!.Text = Extecute.Birthday.ToString();
            textBox4!.Text = Extecute.Name.ToString();
            textBox5!.Text = Extecute.Age.ToString();
            textBox6!.Text = Extecute.Salary.ToString();
        }
        /// <summary>
        /// 声明泛型类
        /// 在泛型类内声明泛型字段
        /// </summary>
        /// <typeparam name="T"></typeparam>
        class Types<T>
        {
            public T? ID;      //声明编号字段 
            public T? Name;    //声明姓名字段 
            public T? Sex;     //声明性别字段 
            public T? Age;     //声明年龄字段 
            public T? Birthday;//声明生日字段 
            public T? Salary;  //声明薪水字段 
        }
    }
}

以上就是C#使用泛型实现获取并显示员工信息的详细内容,更多关于C#泛型获取信息的资料请关注脚本之家其它相关文章!

相关文章

  • C#中fixed关键字的作用总结

    C#中fixed关键字的作用总结

    以下是对C#中fixed关键字的作用进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-09-09
  • C#加解密之DES算法的实现

    C#加解密之DES算法的实现

    DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。本文将用C#语言实现DES算法,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-08-08
  • WPF实现动画效果(一)之基本概念

    WPF实现动画效果(一)之基本概念

    这篇文章介绍了WPF实现动画效果之基本概念,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C#使用Pipelines实现处理Socket数据包

    C#使用Pipelines实现处理Socket数据包

    这篇文章主要为大家详细介绍了C#如何使用Pipelines实现处理Socket数据包,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • C#与js实现去除textbox文本框里面重复记录的方法

    C#与js实现去除textbox文本框里面重复记录的方法

    这篇文章主要介绍了C#与js实现去除textbox文本框里面重复记录的方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#如何修改项目名图文详解

    C#如何修改项目名图文详解

    最近开发工作接近尾声,客户来要求更换项目的名称,差不多要变更整个解决方案中项目名称,引用等等,这个工作量还是很大的,这篇文章主要给大家介绍了关于C#如何修改项目名的相关资料,需要的朋友可以参考下
    2023-01-01
  • C# PadLeft、PadRight用法详解

    C# PadLeft、PadRight用法详解

    本文主要介绍了C# PadLeft、PadRight用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 字符串和十六进制之间的转换方法实例

    字符串和十六进制之间的转换方法实例

    这篇文章介绍了字符串和十六进制之间的转换方法实例,有需要的朋友可以参考一下
    2013-11-11
  • C#使用ADO.Net连接数据库与DbProviderFactory实现多数据库访问

    C#使用ADO.Net连接数据库与DbProviderFactory实现多数据库访问

    这篇文章介绍了C#使用ADO.Net连接数据库与DbProviderFactory实现多数据库访问的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#数据库操作的示例详解

    C#数据库操作的示例详解

    这篇文章主要通过一些示例为大家详细介绍了C#中数据库操作用法,文中的示例代码讲解详细,具有有一定的借鉴价值,需要的可以参考一下
    2022-07-07

最新评论