C# 用户输入初始化数组示例和隐式转换
是否有方法强制转换未处理的异常行,以便“输入字符串”采用“正确的”int格式?我不记得这种类型的不兼容隐式转换的解决方法……first for循环中语句处未处理的异常C# 用户输入初始化数组示例和隐式转换,c#,implicit-conversion,C#,Implicit Conversion,是否有方法强制转换未处理的异常行,以便“输入字符串”采用“正确的”int格式?我不记得这种类型的不兼容隐式转换的解决方法……first for循环中语句处未处理的异常 public class ArrayTest { public static void Main() { // initialize array int[] myArray; Console.WriteLine("Ent
public class ArrayTest
{
public static void Main()
{
// initialize array
int[] myArray;
Console.WriteLine("Enter size of an Array");
int arrayVariable = Convert.ToInt32(Console.ReadLine());
myArray = new int[arrayVariable];
Console.WriteLine("Element at index {0}", arrayVariable);
Console.WriteLine("Enter elements of Array");
for (int i = 0; i < arrayVariable; i++)
{
myArray[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < arrayVariable; i++)// Display Array Elements
{
Console.WriteLine("Element at index {0} {1}: ", i, myArray[i]);
}
}
}
公共类数组测试
{
公共静态void Main()
{
//初始化数组
int[]myArray;
WriteLine(“输入数组的大小”);
int arrayVariable=Convert.ToInt32(Console.ReadLine());
myArray=新整数[arrayVariable];
WriteLine(“索引{0}处的元素”,arrayVariable);
Console.WriteLine(“输入数组元素”);
for(int i=0;i
Int32.TryParse(string,out int)方法将指定的32位带符号整数的字符串表示形式转换为out变量,如果成功解析,则返回true,否则返回false。此方法在C#2.0及更高版本中可用。当s是空引用时,它将返回0而不是抛出ArgumentNullException。如果s不是整数值,则out变量将具有0而不是FormatException。当s表示小于MinValue或大于MaxValue的数字时,out变量将具有0而不是OverflowException
success = Int32.TryParse(s1, out result); //-- success => true; result => 1234
success = Int32.TryParse(s2, out result); //-- success => false; result => 0
success = Int32.TryParse(s3, out result); //-- success => false; result => 0
success = Int32.TryParse(s4, out result); //-- success => false; result => 0
Convert.ToInt32优于Int32.Parse,因为它返回0而不是异常。但同样,根据要求,这是可以使用的。TryParse将是最好的,因为它总是自己处理异常。
TryParse
是验证inut类型的选择之一
public class ArrayTest
{
public static void Main()
{
// initialize array
int[] myArray;
Console.WriteLine("Enter size of an Array");
int arrayVariable = Convert.ToInt32(Console.ReadLine());
myArray = new int[arrayVariable];
Console.WriteLine("Element at index {0}", arrayVariable);
Console.WriteLine("Enter elements of Array");
for (int i = 0; i < arrayVariable; i++)
{
string input = Console.ReadLine();
int result;
if(int.TryParse(input, out result))
{
myArray[i] = result;
}
else
{
i--;
Console.WriteLine("Invalid input format");
}
}
for (int i = 0; i < arrayVariable; i++)// Display Array Elements
{
Console.WriteLine("Element at index {0} {1}: ", i, myArray[i]);
}
}
}
公共类数组测试
{
公共静态void Main()
{
//初始化数组
int[]myArray;
WriteLine(“输入数组的大小”);
int arrayVariable=Convert.ToInt32(Console.ReadLine());
myArray=新整数[arrayVariable];
WriteLine(“索引{0}处的元素”,arrayVariable);
Console.WriteLine(“输入数组元素”);
for(int i=0;i
不清楚你在问什么。哪个是“未处理的异常行”?你说的是什么类型的“cast”?我想你指的是
Int32.TryParse
,而不是Int32.Parse
。此外,它“在C#2.0中不可用”;它在.NET2.0中可用,这是不一样的。@johnsa理解是的,我的badOk,但当它与C无关时,你仍然说“C#2.0”。