我有一个2D数组,我想清除并重置为0值.我知道如何清除矢量(1D阵列),Array.Clear()但我不知道清除2D矩阵的最佳方法.
double D = new double[10];
Array.Clear(D, 0, D.Length);
Run Code Online (Sandbox Code Playgroud)
如何清除2D N x M阵列
double D[,] = new double[N,M];
Run Code Online (Sandbox Code Playgroud)
感谢您提供的任何帮助.
我意识到结构是不可变的,改变结构是邪恶的,改变结构中值的正确方法是创建新实例。但是,我不清楚新实例的内存和性能方面/问题与允许结构可变的问题。
假设我有结构,
struct Vehicle
{
public readonly int Number;
public readonly double Speed, Direction;
public Vehicle(int number, double speed, double direction)
{
this.Number = number;
this.Speed = speed;
this.Direction = direction;
}
}
Run Code Online (Sandbox Code Playgroud)
并将其创建为:
Vehicle car;
Run Code Online (Sandbox Code Playgroud)
也
Vehicle plane = new Vehicle(1234, 145.70, 73.20)
Run Code Online (Sandbox Code Playgroud)
如果我稍后需要分配给数字、速度或方向,我可以删除只读并使结构可变 - 我知道这样做很困难。- 从而“改变”已经创建的结构值。
或者我可以创建一个新的结构实例。所以不要说 car.Speed = 120.7; 我可以说 car = new Vehicle(car.Number, 178.55, car.Direction);。这将创建一个几乎与旧值类似的新结构值,只是速度发生了变化。但它不会改变现有的结构值。
这就是问题所在。假设,作为一个极端的例子,我需要每秒更新速度和/或方向数千次。我认为创建这么多实例会严重影响内存和性能,在这种情况下,最好允许结构是可变的。
任何人都可以澄清可变结构的内存和性能问题以及在这种极端情况下实现结构的正确方法吗?
有谁知道检查 2D 数组中的元素是否为 NaN 或无穷大的最佳方法是什么?我的数组可能很大,所以我不想循环它。我正在考虑使用
double[,] myArray;
if ( !double.IsNaN(myArray.Cast<double>().Min() ) && !double.IsInfinity( myArray.Cast<double>().Min() )
{
// have finite values as elements
}
Run Code Online (Sandbox Code Playgroud)
用于 NaN 和无穷大检查。我只需要知道数组中是否有 NaN 或无穷大的元素,因此我认为只需检查数组中的最小元素就可以解决 NaN 和无穷大的问题。有一个更好的方法吗?感谢您提供的任何帮助或建议。
如果之前有人问过并回答我但我无法找到答案,我会道歉.
我知道如何遍历控件集合并获取包括子控件在内的所有控件的列表.
void printControlTree(Control ctl, int indent)
{
string pad = "";
for(int i=0; i < indent; i++)
{
pad += " ";
}
Print(pad + "=> " + ctl.Name);
if (ctl.Controls != null && ctl.Controls.Count > 0)
{
foreach (Control c in ctl.Controls)
{
printControlTree(c, indent+1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是获得每个控件和子控件中所有方法的列表.这可能吗?我会这么认为,因为有Control.ControlCollection.Find方法通过名称在控件中查找特定方法,但我想要一个所有方法的列表,而不知道他们的名字提前.此外,是否可以获得控件中所有内容的列表:方法,输入字段等?非常感谢您的帮助.谢谢.