我需要这样的东西
public class Displayer
{
public ref string[] lines { get; set; }
}
但我没有找到任何解决方案。 我"应用程序的完整代码"是:
public class Displayer
{
public ref string[] lines { get; set; }
public async void Update()
{
while(true)
{
Console.Clear();
foreach(string s in lines)
{
Console.WriteLine(s);
}
}
}
}
答案 0 :(得分:2)
这是完全错误的。您的Displayer类不必要地一遍又一遍地更新控制台。每秒千次。这不符合逻辑。
正确的方法是在需要时更新控制台。您的财产需要以另一种方式实施。
public class Displayer
{
private string[] _lines;
public string[] Lines
{
get { return _lines; }
set
{
// while setting new value call Update
_lines = value;
Update();
}
}
public async void Update()
{
// update console only once
Console.Clear();
foreach (string s in Lines)
{
Console.WriteLine(s);
}
}
}
如果您想了解收藏中的更改,请改用ObservableCollection
。
您无需在此处更改参考。因为你总是可以改变集合的大小。
public class Displayer
{
public Displayer()
{
Lines = new ObservableCollection<string>();
Lines.CollectionChanged += Update; // Update will be called automatically when ever collection changes.
}
public ObservableCollection<string> Lines { get; }
private void Update(object sender, NotifyCollectionChangedEventArgs args)
{
// update console only once
Console.Clear();
foreach (string s in Lines)
{
Console.WriteLine(s);
}
}
}