C#使用泛型實(shí)現(xiàn)獲取并顯示員工信息
一、關(guān)于泛型
1.泛型定義
泛型編程是一種編程方式,它利用“參數(shù)化類型”將類型抽象化,從而實(shí)現(xiàn)更為靈活的復(fù)用。泛型是用于處理算法、數(shù)據(jù)結(jié)構(gòu)的一種編程方法。泛型的目標(biāo)是采用廣泛適用和可交互性的形式來表示算法和數(shù)據(jù)結(jié)構(gòu),以使它們能夠直接用于軟件構(gòu)造。泛型類、結(jié)構(gòu)、接口、委托和方法可以根據(jù)它們存儲(chǔ)和操作的數(shù)據(jù)類型來進(jìn)行參數(shù)化。
2.泛型與非泛型的區(qū)別
泛型能在編譯時(shí)提供強(qiáng)大的類型檢查,減少數(shù)據(jù)類型之間的顯示轉(zhuǎn)換、裝箱操作和運(yùn)行時(shí)的類型檢查等。泛型類和泛型方法同時(shí)具備可重用性、類型安全和效率高等特性,這是非泛型類和非泛型方法無法具備的。
3.泛型的應(yīng)用
泛型類、結(jié)構(gòu)、接口、委托和方法可以根據(jù)它們存儲(chǔ)和操作的數(shù)據(jù)類型來進(jìn)行參數(shù)化。泛型通常用在集合和在集合上運(yùn)行的方法中。
泛型是C#編程中一種強(qiáng)大的功能,它允許創(chuàng)建可以處理多種類型的數(shù)據(jù)的通用類、方法和函數(shù)。泛型是在C# 2.0中引入的,它提供了一種類型安全的方式,可以在不犧牲性能的情況下重用代碼。
泛型的主要優(yōu)點(diǎn)是它可以在編譯時(shí)檢查類型安全,避免了運(yùn)行時(shí)類型轉(zhuǎn)換錯(cuò)誤。它還可以提高代碼的可讀性和可重用性。以下是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是一個(gè)類型參數(shù),它可以在創(chuàng)建類、方法或函數(shù)時(shí)指定。通過使用泛型,我們可以創(chuàng)建可以處理不同類型的數(shù)據(jù)的通用代碼,而不需要為每種類型編寫特定的代碼。
二、實(shí)例
本實(shí)例將使用泛型存儲(chǔ)不同類型的數(shù)據(jù),在實(shí)現(xiàn)時(shí),首先定義一個(gè)泛型類,并在泛型類中定義多個(gè)泛型變量;然后使用這些變量記錄不同類型的數(shù)據(jù),這樣就可以重復(fù)利用泛型變量來存儲(chǔ)不同類型的數(shù)據(jù)。本實(shí)例用來通過泛型獲取員工信息并顯示。
// 通過泛型獲取員工信息并顯示
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 = "編號(hào):"
};
//
// 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 = "使用泛型存儲(chǔ)不同類型的數(shù)據(jù)列表";
groupBox1.ResumeLayout(false);
groupBox1.PerformLayout();
}
/// <summary>
/// 為泛型類中聲明的字段進(jìn)行賦值,存儲(chǔ)不同類型的值
/// 實(shí)例化泛型類對(duì)象
/// 將泛型類中各字段的值顯示在文本框中
/// </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>
/// 聲明泛型類
/// 在泛型類內(nèi)聲明泛型字段
/// </summary>
/// <typeparam name="T"></typeparam>
class Types<T>
{
public T? ID; //聲明編號(hào)字段
public T? Name; //聲明姓名字段
public T? Sex; //聲明性別字段
public T? Age; //聲明年齡字段
public T? Birthday;//聲明生日字段
public T? Salary; //聲明薪水字段
}
}
}
以上就是C#使用泛型實(shí)現(xiàn)獲取并顯示員工信息的詳細(xì)內(nèi)容,更多關(guān)于C#泛型獲取信息的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#WinForm實(shí)現(xiàn)多語言切換的示例
本文主要介紹了C#WinForm實(shí)現(xiàn)多語言切換的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
C#中計(jì)時(shí)器的簡單實(shí)現(xiàn)方法示例
這篇文章主要介紹了C#中計(jì)時(shí)器的簡單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了C#計(jì)時(shí)器的簡單定義與使用技巧,需要的朋友可以參考下2017-05-05
jQuery uploadify在谷歌和火狐瀏覽器上傳失敗的解決方案
jquery.uploadify插件是一個(gè)基于jquery來實(shí)現(xiàn)上傳的,這個(gè)插件很好用,每一次向后臺(tái)發(fā)送數(shù)據(jù)流請(qǐng)求時(shí),ie會(huì)自動(dòng)把本地cookie存儲(chǔ)捆綁在一起發(fā)送給服務(wù)器。但firefox、chrome不會(huì)這樣做,他們會(huì)認(rèn)為這樣不安全,下面介紹下jQuery uploadify上傳失敗的解決方案2015-08-08
C#實(shí)現(xiàn)毫秒轉(zhuǎn)換成時(shí)分秒的方法
這篇文章主要介紹了C#實(shí)現(xiàn)毫秒轉(zhuǎn)換成時(shí)分秒的方法,涉及C#時(shí)間的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
.Net(c#)漢字和Unicode編碼互相轉(zhuǎn)換實(shí)例
下面小編就為大家?guī)硪黄?Net(c#)漢字和Unicode編碼互相轉(zhuǎn)換實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
使用GPS經(jīng)緯度定位附近地點(diǎn)(某一點(diǎn)范圍內(nèi)查詢)
目前的工作是需要手機(jī)查找附近N米以內(nèi)的商戶,致想法是已知一個(gè)中心點(diǎn),一個(gè)半徑,求圓包含于圓拋物線里所有的點(diǎn),經(jīng)緯度是一個(gè)點(diǎn),半徑是一個(gè)距離,不能直接加減,下面提供C#的解決方法2013-12-12
使用C#?11的靜態(tài)接口方法改進(jìn)?面向約定?的設(shè)計(jì)方法
我們知道接口是針對(duì)契約的定義,但是一直以來它只能定義一組“實(shí)例”的契約,而不能定義類型的契約,因?yàn)槎x在接口中的方法只能是實(shí)例方,這篇文章主要介紹了使用C#?11的靜態(tài)接口方法改進(jìn)面向約定?的設(shè)計(jì),需要的朋友可以參考下2022-12-12
c#實(shí)現(xiàn)服務(wù)器性能監(jiān)控并發(fā)送郵件保存日志
這篇文章主要介紹了c#實(shí)現(xiàn)服務(wù)器性能監(jiān)控并發(fā)送郵件保存日志的示例,代碼分為客戶端和服務(wù)端,客戶端可安裝為本地服務(wù)形式啟動(dòng)2014-01-01

