C# 多维foreach循环
我如何才能正确地对每个字符串执行检查 我的代码如下所示:C# 多维foreach循环,c#,dimensions,C#,Dimensions,我如何才能正确地对每个字符串执行检查 我的代码如下所示: string[,] screeny_baza = new string[300, 300]; for (int i = 0; i < 299; i++) { try { string nazwa_screna_pokolei = screeny_baza[0,i] } catch { }; } 例如,只想将字符串保存到每个dimesnion string [00] = "bird";
string[,] screeny_baza = new string[300, 300];
for (int i = 0; i < 299; i++)
{
try
{
string nazwa_screna_pokolei = screeny_baza[0,i]
}
catch { };
}
例如,只想将字符串保存到每个dimesnion
string [00] = "bird";
string [01] = "bird2";
以后需要在循环中获取该值(忽略值)不存在或尚未声明的)
谢谢您的帮助。我不知道多维数组上的foreach循环,但您可以随时执行以下操作:
string[,] screeny_baza = new string[300, 300];
for (int x = 0; x < screeny_baza.GetLength(0); x++)
{
for (int y = 0; y < screeny_baza.GetLength(1); y++)
{
try
{
string nazwa_screna_pokolei = string.empty;
if (screeny_baza[x, y] != null)
nazwa_screna_pokolei = screeny_baza[x, y];
}
catch { };
}
}
string[,]screeny_baza=新字符串[300300];
对于(intx=0;x
我不知道多维数组上的foreach循环,但您始终可以这样做:
string[,] screeny_baza = new string[300, 300];
for (int x = 0; x < screeny_baza.GetLength(0); x++)
{
for (int y = 0; y < screeny_baza.GetLength(1); y++)
{
try
{
string nazwa_screna_pokolei = string.empty;
if (screeny_baza[x, y] != null)
nazwa_screna_pokolei = screeny_baza[x, y];
}
catch { };
}
}
string[,]screeny_baza=新字符串[300300];
对于(intx=0;x
对于存储,您将使用行和列索引,如:
screeny_baza[0,0] = "bird";
screeny_baza[0,1] = "bird";
对于使用GetLength循环值(虽然您知道维度是常量,但这是一种更灵活的方法):
for(int row=0;row
对于存储,您将使用行和列索引,如:
screeny_baza[0,0] = "bird";
screeny_baza[0,1] = "bird";
对于使用GetLength循环值(虽然您知道维度是常量,但这是一种更灵活的方法):
for(int row=0;row
您可以在二维阵列上进行foreach。你甚至可以在哪里过滤它
var table = new string[20, 20];
table[0, 0] = "Foo";
table[0, 1] = "Bar";
foreach (var value in table.Cast<string>().Where(x =>!string.IsNullOrEmpty(x))) {
Console.WriteLine(value);
}
var表=新字符串[20,20];
表[0,0]=“Foo”;
表[0,1]=“条形图”;
foreach(table.Cast()中的var值,其中(x=>!string.IsNullOrEmpty(x))){
控制台写入线(值);
}
您可以在二维阵列上进行foreach。你甚至可以在哪里过滤它
var table = new string[20, 20];
table[0, 0] = "Foo";
table[0, 1] = "Bar";
foreach (var value in table.Cast<string>().Where(x =>!string.IsNullOrEmpty(x))) {
Console.WriteLine(value);
}
var表=新字符串[20,20];
表[0,0]=“Foo”;
表[0,1]=“条形图”;
foreach(table.Cast()中的var值,其中(x=>!string.IsNullOrEmpty(x))){
控制台写入线(值);
}
实际上,try-catch块不会引发任何异常,因为在构造数组时:
string[,] screeny_baza = new string[300, 300];
只要索引在范围内,就可以对其进行索引;因此,声明:
string nazwa_screna_pokolei = screeny_baza[0,i];
将无错误地执行。只有nazwa_screna_pokolei将无效
另外,如果考虑速度,嵌套for循环比LinQ快得多。至少对于这个简单的检查。例如:
var list = screeny_baza.Cast<string>().Where(x => !string.IsNullOrEmpty(x)).ToList();
var list=screeny_baza.Cast().Where(x=>!string.IsNullOrEmpty(x)).ToList();
大约需要10毫秒,但是
for (int i = 0; i < 300; i++)
{
for (int j = 0; j < 300; j++)
{
if (string.IsNullOrEmpty(screeny_baza[i,j]))
{
continue;
}
list.Add(screeny_baza[i, j]);
}
}
for(int i=0;i<300;i++)
{
对于(int j=0;j<300;j++)
{
if(string.IsNullOrEmpty(screeny_baza[i,j]))
{
继续;
}
添加(screeny_baza[i,j]);
}
}
只需1毫秒。实际上,try-catch块不会引发任何异常,因为在构建阵列时:
string[,] screeny_baza = new string[300, 300];
只要索引在范围内,就可以对其进行索引;因此,声明:
string nazwa_screna_pokolei = screeny_baza[0,i];
将无错误地执行。只有nazwa_screna_pokolei将无效
另外,如果考虑速度,嵌套for循环比LinQ快得多。至少对于这个简单的检查。例如:
var list = screeny_baza.Cast<string>().Where(x => !string.IsNullOrEmpty(x)).ToList();
var list=screeny_baza.Cast().Where(x=>!string.IsNullOrEmpty(x)).ToList();
大约需要10毫秒,但是
for (int i = 0; i < 300; i++)
{
for (int j = 0; j < 300; j++)
{
if (string.IsNullOrEmpty(screeny_baza[i,j]))
{
continue;
}
list.Add(screeny_baza[i, j]);
}
}
for(int i=0;i<300;i++)
{
对于(int j=0;j<300;j++)
{
if(string.IsNullOrEmpty(screeny_baza[i,j]))
{
继续;
}
添加(screeny_baza[i,j]);
}
}
只需1毫秒。我的简单助手适用于此类情况
private static void forEachCell(int size, Action<int, int> action)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
action(j, i);
}
}
}
我的简单助手处理此类案件
private static void forEachCell(int size, Action<int, int> action)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
action(j, i);
}
}
}
两个维度将使用嵌套在另一个维度内部的循环。当然,您可以在执行操作之前检查它是否为null。也许有更好的方法来声明类似于它的变量以更快地获取值?当我只为[150150]设置值时,它将检查每个维度,是否可以只检查声明的值?说真的,现在不要担心速度。因为循环很快。如果你正在经历明显的减速,可能是其他原因。不要担心过早优化!我不知道问题是,还是,或者是因为这个问题,我想看看你是否可以使用锯齿数组。然后每行可以有一个foreach循环。两个维度将使用嵌套在另一个维度中的循环。当然,您可以在执行操作之前检查它是否为null。也许有更好的方法来声明类似于它的变量以更快地获取值?当我只为[150150]设置值时,它将检查每个维度,是否可以只检查声明的值?说真的,现在不要担心速度。因为循环很快。如果你正在经历明显的减速,可能是其他原因。不要担心过早优化!我不知道问题是,还是,或者是因为这个问题,我想看看你是否可以使用锯齿数组。然后每行可以有一个
foreach
循环。你可以。@DragandDrop我似乎无法建立连接。“你能做什么?”菲尔多说,“我不知道在多维空间上如何使用ach。”。