gpt4 book ai didi

c# - 如何转换不同的类型

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:34 24 4
gpt4 key购买 nike

这是我的代码:

public class MyButton
{
Object button;

public MyButton(System.Windows.Forms.ToolStripButton button)
{
this.button = button;
}

public MyButton(System.Windows.Forms.ToolStripSplitButton button)
{
this.button = button;
}

public void EnableButton(bool enable)
{
if (button is System.Windows.Forms.ToolStripButton)
((System.Windows.Forms.ToolStripButton)button).Enabled = enable;
else if (button is System.Windows.Forms.ToolStripSplitButton)
((System.Windows.Forms.ToolStripSplitButton)button).Enabled = enable;
}

//...
}

我想知道我可以缩短这段代码吗?我能以某种方式按类型转换吗?像这样:

public void EnableButton(bool enable)
{
((FakeFuctionToGetCastType(button))button).Enabled = enable;
}

当然是我的假函数...那么有办法吗?

最佳答案

我会让它通用:

public class MyButton<T> where T : System.Windows.Forms.ToolStripItem
{
T button;

public MyButton(T button)
{
this.button = button;
}

public void EnableButton(bool enable)
{
this.button.Enabled = enable;
}
}

编辑:作为旁注,您会希望在泛型的分配中约束尽可能严格。如果您可以为要使用的控件找到一个比 Control 更接近的公共(public)继承类,那么您应该使用那个。

关于c# - 如何转换不同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com