これは単純なものでなければならないことを私は見落としていますが、それは2つの異なるクラスの問題を引き起こしています。彼らは同様の設定をしているので、私はちょうど1つのクラスのコードを投稿します。ここでは正確なエラーは次のとおりです。String List OutOfRangeException
System.ArgumentOutOfRangeException: Index and length must refer to a location within the string. Parameter name: length at System.String.Substring(Int32 startIndex, Int32 length) at Terminal_Control_Center.UserDir.newDir() in C:\Users\Chris\Documents\GitHub\TerminalControlCenter\Terminal Control Center\Terminal Control Center\UserDir.cs:line 30 at Terminal_Control_Center.Program.Main(String[] args) in C:\Users\Chris\Documents\GitHub\TerminalControlCenter\Terminal Control Center\Terminal Control Center\Program.cs:line 259
namespace Terminal_Control_Center
{
class UserDir
{
List<string> userDir;
string input = "";
public UserDir(List<String> userDir, string input)
{
this.userDir = userDir;
this.input = input;
}
public void newDir()
{
// checks for invalid characters
if (input.Contains("/") ||
input.Contains(".") ||
input.Contains(",") ||
input.Contains("+") ||
input.Contains("*") ||
input.Contains("\\") ||
input.Contains("]") ||
input.Contains("[") ||
input.Contains("{") ||
input.Contains("}") ||
input.Contains(";") ||
input.Contains("'") ||
input.Contains("\"") ||
input.Contains(":") ||
input.Contains("<") ||
input.Contains(">") ||
input.Contains("%"))
{
// use later for invalid input
}
else // throws error
{
// currently throwing error LINE:30
userDir.Add(input.Substring(5, input.Length - 1));
}
}
public string getDir()
{
return userDir[0];
}
}
}
?例外は、 'Substring'を使用しているところで、いくつかの行を示しているようなものです。これが実行されるときの 'input'の値は何ですか? –
あなたは例外がスローされている場所がわからif' '内部のものです
–申し訳ありませんが、私は悪いコメントをしていた。このエラーは、30行目の部分文字列部分で発生します。コメントは、ユーザーが無効な文字を入力したというエラーをスローすることです。 – Mercifies