有关Add和AddRange的问题(100分求答案,可以加)

serapn123 2009-12-26 02:37:20
AbstractSheetManager mgrInstance = ObjectHelper.CreateInstance(task.ManagerType, expMgr) as AbstractSheetManager;
我有一个类mgrInstance 我给它赋值ObjectHelper.CreateInstance(task.ManagerType, expMgr) as AbstractSheetManager;
之后
它有可能是1个参数也可能是多个参数,然后我就判断了下做了如下操作

if (mgrInstance is AbstractSheetManager[])
{
mgrInstances.AddRange((mgrInstance as IMultSheetsMgr).CreateMultiManagers());
}
else
{
mgrInstances.Add(mgrInstance);
}
IMultSheetsMgr是一个借口他里面的方法返回一个AbstractSheetManager的数组
public interface IMultSheetsMgr
{
/// <summary>
/// 返回多个表单管理器
/// </summary>
AbstractSheetManager[] CreateMultiManagers();
}

可问题是我在判断后得到的值,都是不全的。
但是如果只用Add或者只用AddRange得到的值也是不全的,这个能有什么方法解决么
...全文
627 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
serapn123 2010-01-05
  • 打赏
  • 举报
回复
问题解决了发现其实是逻辑错误,谢谢大家。
liaoyukun111 2009-12-28
  • 打赏
  • 举报
回复
果然搞不清楚要干什么,有罪我呀
serapn123 2009-12-28
  • 打赏
  • 举报
回复
有没有达人能帮忙分析下
  • 打赏
  • 举报
回复
我错了。。忽略吧。。。
  • 打赏
  • 举报
回复
AbstractSheetManager[] mgrInstance = ObjectHelper.CreateInstance(task.ManagerType, expMgr) as AbstractSheetManager[];
我有一个类mgrInstance 我给它赋值ObjectHelper.CreateInstance(task.ManagerType, expMgr) as AbstractSheetManager;
之后
它有可能是1个参数也可能是多个参数,然后我就判断了下做了如下操作

if (mgrInstance.Length>1/*is AbstractSheetManager[]*/)
{
mgrInstances.AddRange((mgrInstance as IMultSheetsMgr).CreateMultiManagers());
}
else
{
mgrInstances.Add(mgrInstance);
}
其实只用AddRange应该可以的
IMultSheetsMgr是一个借口他里面的方法返回一个AbstractSheetManager的数组
public interface IMultSheetsMgr
{
/// <summary>
/// 返回多个表单管理器
/// </summary>
public AbstractSheetManager[] CreateMultiManagers();
}


仅代表个人看法,才疏学浅,见笑
  • 打赏
  • 举报
回复
那个 mgrInstance 获取实例的时候能获取到数组?
  • 打赏
  • 举报
回复
帮顶,顺便学习!
wxd024 2009-12-26
  • 打赏
  • 举报
回复
帮顶
serapn123 2009-12-26
  • 打赏
  • 举报
回复
别沉了~~~
求解
serapn123 2009-12-26
  • 打赏
  • 举报
回复
Add方法是增加一个参数,增加多个参数的的时候使用一个foreach循环而已

AddRange方法是增加一个参数的数组
这两个方法都是泛型自带的
List<AbstractSheetManager> mgrInstances = new List<AbstractSheetManager>();
ProjectDD 2009-12-26
  • 打赏
  • 举报
回复
你这个问题可能还要给一些其它迅息吧,你所说的不全,和Add,AddRanage这些方法(是自定义的代码吧)是怎么实现的都不清楚啊,
serapn123 2009-12-26
  • 打赏
  • 举报
回复
有没有人来帮忙看下,不胜感激
serapn123 2009-12-26
  • 打赏
  • 举报
回复
if (mgrInstance is IMultSheetsMgr)
是这样的
ProjectDD 2009-12-26
  • 打赏
  • 举报
回复
class A{
public A[] ACollection{get;set;}
}

就算是这样,我想A也不会是 A[]吧,你这句是不是有问题

is引用 类型判断啊,[]和它本身不是一个类型吧
serapn123 2009-12-26
  • 打赏
  • 举报
回复
就是mgrInstance 里面有时候会是AbstractSheetManager[]数组的形式
ProjectDD 2009-12-26
  • 打赏
  • 举报
回复
你这个判断 有些奇怪 怎么会有:
if (mgrInstance is AbstractSheetManager[])

//mgrInstance不是AbstractSheetManager 吗

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧