如何将动态对象设置为正确的类型
本文关键字:类型 设置 动态 对象 | 更新日期: 2023-09-27 18:16:44
这是移动滚动条的函数(我有一个水平滚动条和一个垂直滚动条)
private void moveTheScroll(object sbar, int scrollDiff)
{
if (sbar is HScrollBar)
{
int newScrollvalue = ((HScrollBar)sbar).Value + scrollDiff;
if (((HScrollBar)sbar).Minimum < newScrollvalue &&
newScrollvalue < ((HScrollBar)sbar).Maximum)
((HScrollBar)sbar).Value = newScrollvalue;
}
else if (sbar is VScrollBar)
{
int newScrollvalue = ((VScrollBar)sbar).Value + scrollDiff;
if (((VScrollBar)sbar).Minimum < newScrollvalue &&
newScrollvalue < ((VScrollBar)sbar).Maximum)
((VScrollBar)sbar).Value = scrollDiff;
}
}
是否有一种方法来不类型转换对象每次我想使用它,而使别名代替?类似于这个(这个不起作用,因为v不能初始化)
var v;
if(sbar is HScrollBar)
v = (HScrollBar)sbar;
else if(sbar is VScrollBar)
v = (VScrollBar)sbar;
v.Value = newValue;
如果两种类型都继承自Scrollbar
类,那么您只需要执行一次强制转换:
private void moveTheScroll(object sbar, int scrollDiff)
{
var scrollBar = sbar as ScrollBar;
if(scrollBar != null)
{
int newScrollvalue = scrollBar.Value + scrollDiff;
// do other works with scrollBar...
}
}