C# 使用枚举器显示数组中的结构
在一个对象中,我有:C# 使用枚举器显示数组中的结构,c#,arrays,oop,struct,iterator,C#,Arrays,Oop,Struct,Iterator,在一个对象中,我有: public IEnumerable<voiture> recup_voitures() { foreach (voiture v in _arrVCollection) { yield return (v); } } 发生的情况是,如果我有一个长度为5的数组,其中只有1个struct voiture,它将显示代码5次,而不是仅显示1次。我做错了什么?如果创建长度为5的结构数组,则表示数组将包含5个使用默认构造函数构造的
public IEnumerable<voiture> recup_voitures()
{
foreach (voiture v in _arrVCollection)
{
yield return (v);
}
}
发生的情况是,如果我有一个长度为5的数组,其中只有1个struct voiture,它将显示代码5次,而不是仅显示1次。我做错了什么?如果创建长度为5的结构数组,则表示数组将包含5个使用默认构造函数构造的结构
voiture[] arr = new voiture[5];
arr[0] = some_non-default_voiture;
在这种情况下,数组将包含一个非默认的voiture
实例和四个默认实例
要仅获取一个voiture
实例,您可以创建长度为1的数组,或使用List
:
并列举如下:
public IEnumerable<voiture> recup_voitures()
{
foreach (voiture? v in _arrVCollection)
{ if (v.HasValue)
yield return v.Value;
}
}
若要创建长度为5的结构数组,则表示数组将包含5个使用默认构造函数构造的结构
voiture[] arr = new voiture[5];
arr[0] = some_non-default_voiture;
在这种情况下,数组将包含一个非默认的voiture
实例和四个默认实例
要仅获取一个voiture
实例,您可以创建长度为1的数组,或使用List
:
并列举如下:
public IEnumerable<voiture> recup_voitures()
{
foreach (voiture? v in _arrVCollection)
{ if (v.HasValue)
yield return v.Value;
}
}
在当前代码中,您会得到异常 如果
voiture
将为class,则可以在recup\u voitures
方法中更改代码:
public static IEnumerable<voiture> recup_voitures()
{
foreach (voiture v in _arrVCollection)
{
if (v != null)
yield return (v);
}
}
public static IEnumerable recup_voitures()
{
foreach(voiture v in_arrVCollection)
{
如果(v!=null)
收益率(v);
}
}
在当前代码中,您会遇到异常
如果voiture
将为class,则可以在recup\u voitures
方法中更改代码:
public static IEnumerable<voiture> recup_voitures()
{
foreach (voiture v in _arrVCollection)
{
if (v != null)
yield return (v);
}
}
public static IEnumerable recup_voitures()
{
foreach(voiture v in_arrVCollection)
{
如果(v!=null)
收益率(v);
}
}
长度为5,但其中只有1个结构变量的数组是什么意思?voiture[]anArray=new voiture[5]代码>然后anArray[0]=new voiture()
没有理由在该方法中产生收益
;您可以直接返回\u arrVCollection
,因为它包含IEnumerable
。什么是长度为5的数组,但其中只有1个struct voiture?voiture[/anArray=new voiture[5]代码>然后anArray[0]=new voiture()
没有理由在该方法中产生收益
;您可以直接返回\u arrVCollection
,因为它包含IEnumerable
。它们在结构上永远不会为空。。。我的错误。我认为voiture是一个类。它们从来都不是空的,因为它们是结构化的。。。我的错误。我以为voiture是一门课。你的最后一个方法很有魅力!非常感谢。现在我开始阅读什么是可空类型:)而不是在第二种情况下使用迭代器块,您只需return\u arrVCollection.Where(v=>v.HasValue)代码>@Servy,强烈同意。只是用OP风格写的。你的最后一个方法很有魅力!非常感谢。现在我开始阅读什么是可空类型:)而不是在第二种情况下使用迭代器块,您只需return\u arrVCollection.Where(v=>v.HasValue)代码>@Servy,强烈同意。只是用OP风格写的。
public static IEnumerable<voiture> recup_voitures()
{
foreach (voiture v in _arrVCollection)
{
if (v != null)
yield return (v);
}
}