- OfType() 和 Cast() 都是針對集合元素來進行轉型
- OfType:利用 [as] 運算子進行轉型,轉型失敗就忽略該元素
- Cast():利用 Convert.ChangeType() 進行轉型,轉型失敗拋出 InValidCast Exception
簡單範例
在 WinForm 內放置一個 Panel,並在 Panel 內放不同的控件,利用 OfType()、Cast() 來篩選 Panel 內 TextBox 控件
namespace LINQ_OfType_Cast
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOfType_Click(object sender, EventArgs e)
{
string CtlNames = string.Empty;
foreach (TextBox txt in panel1.Controls.OfType<TextBox>())
{
CtlNames += txt.Name + Environment.NewLine;
}
MessageBox.Show(CtlNames , "OfType() 結果" , MessageBoxButtons.OK , MessageBoxIcon.Information);
}
private void btnCast_Click(object sender, EventArgs e)
{
// 預期會丟出 InvlidCastException
foreach (TextBox txt in panel1.Controls.Cast<TextBox>())
{
}
}
}
}
OfType() 結果Cast() 結果
這樣更清楚使用 OfType()、Cast() 使用時機