kye="关键字";
for(int i=0; i<keys.Length;i++ )
{ if(keys[i]==key)
return i;
return -1;
}
上面的代码:提示检测无法访问的代码:其中keys为一字符串数组.
假如在字符串数组中找不到值为"key"的时候会执行:return -1
相反如果找到了会执行return i不执行return -1 怎么会提示检测到无法访问的代码呢?
for(int i=0; i<keys.Length;i++ )
{ if(keys[i]==key)
return i;
return -1;
}
上面的代码:提示检测无法访问的代码:其中keys为一字符串数组.
假如在字符串数组中找不到值为"key"的时候会执行:return -1
相反如果找到了会执行return i不执行return -1 怎么会提示检测到无法访问的代码呢?
using System;
class IndexRecord
{
private string[]data=new string[6];
private string[]keys={"Author","Publisher","Title","Subject","ISBN","Comments"};
public string this[int idx]
{
set
{
if(idx >= 0 && idx<data.Length)
data[idx]=value;
}
get
{
if(idx >=0 && idx>data.Length)
return data[idx];
return null;
}
}
public string this[string key]
{
set
{
int idx=FindKey(key);
this[idx]=value;
}
get
{
return this[FindKey(key)];
}
}
private int FindKey(string key)
{
for(int i=0; i<keys.Length;i++ )
if(keys[i]==key)
return i;
return -1;
}
static void Main()
{
IndexRecord record=new IndexRecord();
record[0]="马克-吐温";
record[1]="Crox出版社";
record[2]="汤姆-索亚历险记";
Console.WriteLine( record["Title"]);
Console.WriteLine( record["Author"]);
Console.WriteLine( record["Publisher"]);
}
}
但是我还是不明白刚才的问题;
key="关键字";
for(int i=0; i<keys.Length;i++ )
{ if(keys[i]==key)
return i;
return -1;
}
上面的代码:提示检测无法访问的代码:其中keys为一字符串数组.
假如在字符串数组中找不到值为"key"的时候会执行:return -1
相反如果找到了会执行return i不执行return -1 怎么会提示检测到无法访问的代码呢?
{
set
{
if(idx >= 0 && idx<data.Length)
data[idx]=value;
}
get
{
if(idx >=0 && idx>data.Length)//是不是笔误?
return data[idx];
return null;
}
}
for(int i=0; i<keys.Length;i++ )
if(keys[i]==key)
return i;
return -1;把源代码改成(我知道如果改成这样子,对于整个程序来说就没什么意思了.但是我们现面只讨论这一小部分的代码,跟整个程序的逻辑无关):
for(int i=0; i<keys.Length;i++ )
{ if(keys[i]==key)
return i;
return -1;
}
上面的代码:提示检测无法访问的代码:其中keys为一字符串数组.
假如在字符串数组中找不到值为"key"的时候会执行:return -1
相反如果找到了会执行return i不执行return -1 怎么会提示检测到无法访问的代码呢?上面的代码:提示检测无法访问的代码:其中keys为一字符串数组.
假如在字符串数组中找不到值为"key"的时候会执行:return -1
相反如果找到了会执行return i不执行return -1 怎么会提示检测到无法访问的代码呢?
for(int i=0; i<keys.Length;i++ )
{
if(keys[i]==key)
return i;
return -1;
}首先说,上面的代码绝对不符合你的理解,他实际就执行一次:判断keys[0]是否==key,如果相等,返回0,如果不等返回-1,而i++这句代码实际上是无法执行的
for(int i=0; i<keys.Length;i++ )
if(keys[i]==key)
return i;
return -1;其实相当于for(int i=0; i<keys.Length;i++ )
{
if(keys[i]==key)
{
return i;
}
}
return -1;你可以比较一下
while(i<keys.length)
{
if(keys[i]==key)
return i;
return -1;
i++;
}从这里就可以清楚的看到无法访问的代码就是i++了