我一直在收到错误
mscorlib.dll中发生未处理的"System.ArgumentOutOfRangeException"类型异常
在我的代码中输入超过70个字符的值时,有人可以解释原因吗?
namespace testingStrategiesCoding
{
class Program
{
static void Main(string[] args)
{
string userMessage;
int messageLength;
string newMessage1;
string newMessage2;
string newMessage3;
Console.WriteLine("Enter a message");
userMessage = Console.ReadLine();
messageLength = userMessage.Length;
if (messageLength < 71)
{
Console.WriteLine("");
Console.WriteLine(userMessage);
}
else if (messageLength > 70 && messageLength < 141)
{
newMessage1 = userMessage.Substring(0, 70);
newMessage2 = userMessage.Substring(71, messageLength);
Console.WriteLine("");
Console.WriteLine(newMessage1);
Console.WriteLine("");
Console.WriteLine(newMessage2);
}
else if (messageLength > 140 && messageLength < 211)
{
newMessage1 = userMessage.Substring(0, 70);
newMessage2 = …Run Code Online (Sandbox Code Playgroud) private int numberofallmessages = 0;
private int countMsg = 0;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
OpenPop.Pop3.Pop3Client PopClient = new OpenPop.Pop3.Pop3Client();
PopClient.Connect("mail", 110, false);
PopClient.Authenticate("r", "n",
OpenPop.Pop3.AuthenticationMethod.UsernameAndPassword);
List<string> uids = PopClient.GetMessageUids();
int messageCount = PopClient.GetMessageCount();
numberofallmessages = messageCount;
allMessages = new List<OpenPop.Mime.Message>(messageCount);
for (int i = messageCount; i > 0; i--)
{
if (backgroundWorker1.CancellationPending == true)
{
e.Cancel = true;
return;
}
string currentUidOnServer = uids[i];
if (!seenUids.Contains(currentUidOnServer))
{
if (i > 0)
allMessages.Add(PopClient.GetMessage(i));
SaveFullMessage(PopClient.GetMessage(i), i);
w = new …Run Code Online (Sandbox Code Playgroud) 我在尝试使用 foreach 循环打印数组值时在运行时收到“System.IndexOutOfRangeException:'索引超出数组范围。'”错误。我在 Visual Studio 中调试了问题,可以看到 foreach 中的 i 将持续到超出范围的 7。foreach 循环会自动获取数组的所有元素,所以请帮助我理解错误的原因?下面是函数:
void Sort(int[] A)
{
for (int i = 1; i < A.Length; i++)
{
int key = A[i];
int j = i - 1;
while (j >= 0 && A[j] > key)
{
A[j + 1] = A[j];
j = j - 1;
}
A[j + 1] = key;
}
foreach (int i in A)
Console.Write(A[i].ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
}
int[] arr=new int[10]{1,21,32,43,54,65,76,87,98,10};
foreach(var i in arr)
{
Console.WriteLine("Elements [{0}]:{1}",arr[i],i);
}
Run Code Online (Sandbox Code Playgroud)
我希望输出像
element[0]: 1
element[1]: 21
...
element[9]: 10
Run Code Online (Sandbox Code Playgroud)
foreach仅使用,但我收到此错误:
未处理的异常:System.IndexOutOfRangeException:索引超出了数组的范围.在Exercise1.Main()<0x41e47d70 + 0x0008c> in:0 [错误]致命未处理的异常:System.IndexOutOfRangeException:索引超出了数组的范围.在Exercise1.Main()<0x41e47d70 + 0x0008c> in:0
我是C#的新手.我知道C和C++语言.目前我有一个C#相关项目.所以,我只想了解C#的基本概念.
在C#中,如果我给出负数组索引,那么会发生什么?它是未定义的行为吗?
喜欢 :
int [] arr = {1,2,3};
Console.WriteLine("{0}", arr[-1]);
Run Code Online (Sandbox Code Playgroud) 我试图在代码战争中解决这个问题,但我不知道它出了什么问题。错误说:
System.ArgumentOutOfRangeException:长度不能小于零。
参数名称:长度
我将不胜感激任何帮助
public static string BreakCamelCase(string str)
{
if (str.Length < 1)
return "";
var res = "";
foreach (var c in str)
{
if (char.IsUpper(c))
res = str.Substring(0,str.IndexOf(c)) + " " + str.Substring(str.IndexOf(c));
str = res;
}
return res;
}
Run Code Online (Sandbox Code Playgroud)