public void GetLstFeatCls(ILayer pLayer, ref List<IFeatureClass> _lstFeatCls)
{
try
{
ILayer pLyr = null;
ICompositeLayer pComLyr = pLayer as ICompositeLayer;
if (pComLyr == null)
{
IFeatureLayer pFeatLyr = pLayer as IFeatureLayer;
if (!_lstFeatCls.Contains(pFeatLyr.FeatureClass))
{
_lstFeatCls.Add(pFeatLyr.FeatureClass);
}
}
else
{
for (int i = 0; i < pComLyr.Count; i++)
{
pLyr = pComLyr.get_Layer(i);
GetLstFeatCls(pLyr, ref _lstFeatCls);
}
}
}
catch (Exception ex)
{
}
}
{
try
{
ILayer pLyr = null;
ICompositeLayer pComLyr = pLayer as ICompositeLayer;
if (pComLyr == null)
{
IFeatureLayer pFeatLyr = pLayer as IFeatureLayer;
if (!_lstFeatCls.Contains(pFeatLyr.FeatureClass))
{
_lstFeatCls.Add(pFeatLyr.FeatureClass);
}
}
else
{
for (int i = 0; i < pComLyr.Count; i++)
{
pLyr = pComLyr.get_Layer(i);
GetLstFeatCls(pLyr, ref _lstFeatCls);
}
}
}
catch (Exception ex)
{
}
}
但如果你对 _lstFeatCls 赋值的话,就一定要有的
如果是_lstFeatCls的整个赋值操作,那么就需要ref
class Program
{
static List<int> list = new List<int> { 1, 2, 3 }; static void Main(string[] args)
{
Write(list); // 1 2 3 Change(ref list);
DontChange(list); Write(list); // 11 22 33 Console.Read();
} static void Write(List<int> list)
{
list.ForEach(p => Console.Write(p + " "));
Console.WriteLine();
} static void Change(ref List<int> list)
{
list = new List<int> { 11, 22, 33 };
} static void DontChange(List<int> list)
{
list = new List<int> { 111, 222, 333 };
}
}