我使用的.NET System.Windows.Forms.DataVisualization.Charting
類型和希望在MarkerStyle
分配給每個系列創建最好跳過MarkerStyle.None
,但每次和騎自行車獲得下一個周圍再次開始。如何通過枚舉循環無限期,但不是在一個for循環?
private MarkerStyle markers = new MarkerStyle();
public Series CreateSeries(string name)
{
var s = chart1.Series.Add(name);
s.ChartType = SeriesChartType.Point;
s.MarkerSize = 7;
s.MarkerStyle = Cycle(markers ,MarkerStyle.None); // get next marker style
s.XValueType = ChartValueType.DateTime;
return s;
}
我嘗試下面的代碼,我發現的變化,所有這些都不會編譯:
public static IEnumerable<T>Cycle<T>(IEnumerable<T> iterable,<T> skip)
{
while (true)
{
foreach (T t in iterable)
{
if(t == skip)
continue;
yield return t;
}
}
}
給出錯誤
CS0411。對於方法 「MyClass.Cycle(System.Collections.Generic.IEnumerable)」類型參數不能 從使用中推斷出來。嘗試明確指定類型參數 。
雖然我有一個具體的用途,它將是一個普通的答案很好。
編輯:具有上面的代碼更仔細地看了看,我看到它永遠不會foreach循環之外工作。何哼。時間寫了黑客:
private int _markerIter = 0;
private readonly int _markerCount = Enum.GetValues(typeof(MarkerStyle)).Length;
public MarkerStyle Cycle()
{
if (_markerIter + 1 == _markerCount)
{
_markerIter = 1; //skips MarkerStyle.None which is == 0
}
else
{
_markerIter++;
}
return (MarkerStyle) _markerIter;
}
沒有什麼不對您的循環方法 - 問題是,當你調用它,你的第一個參數是一個實例MarkerStyle,不MarkerStyle –
感謝馬丁的枚舉我想MarkerStyle,但其產生的編譯器錯誤太多。所以枚舉不是可枚舉的? –