1、 Convert.ToInt32、 int.Parse( Int32.Parse)、 int.TryParse、 (int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢? Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse: Convert.ToInt32 参数为 null 时,返回 0; int.Parse 参数为 null 时,抛出异常。 Convert.ToInt32 参数为 “ 时,抛出异常; int.Parse 参数为 “ 时,抛出异常。 Convert.ToInt32 可以转换的类
2、型较多; int.Parse 只能转换数字类型的字符串。 int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。 退出按钮的语法 private void quitClick(object sender, RoutedEventArgs e) this.Close(); 例: private void divideValues() int lhs = int.Parse(lhsOperand.Text); int rhs = int.Parse(rhsOperand.T
3、ext); int outcome; outcome = lhs / rhs; expression.Text = lhsOperand.Text + “ / “ + rhsOperand.Text; result.Text = outcome.ToString(); 解析: 文本框控件的 Text 属性包含的是字符串,必须将字符串转换为整数。 ToString 是 .NET Framework 中主要的格式化方法。 它将对象转换为其字符串表现形式,使它适合于显示。 .NET Framework 中的每一个类都有一个 ToString 方法,用途是将一个对象转换为相应的字符串形式。 priva
4、te void calculateClick(object sender, RoutedEventArgs e) try if (bool)addition.IsChecked) addValues(); else if (bool)subtraction.IsChecked) subtractValues(); else if (bool)multiplication.IsChecked) multiplyValues(); else if (bool)division.IsChecked) divideValues(); else if (bool)remainder.IsChecked)
5、 remainderValues();/IsChecked 表示是否被选中 catch (Exception caught) expression.Text = “; result.Text = caught.Message; 抛出异常:如果 try 中的命令执行条件都不满足的话, 就执行 catch,而不执行 try 中的语句,则表明没有选择运算方法,所以 expression 没有为空。而 result.Text = caught.Message;为通用抛出异常语句。 例: int x = 42; Console.WriteLine(x+); int y = 42; Console.Wri
6、teLine(+y); Console.ReadLine(); 结果: 解析:在表达式 x+中,它首先返 回 x的值,再执行 +;再 +y中,首先执行 +,再返回 y的值。 例: var myVariable = 99; var myOtherVariable = “ Hello” ; 解析:从例中可以看出,我们并没有具体声明 myVariable和 myOtherVariable的类型,只是用 var代替,但是却可以用 var根据后面的赋值来推算这个类型。 这两个变量被称作隐式类型变量。 var只是在声明变量的时候可以为我们提供一些方便,但是当变量一旦声明完后,就只能将编译器推断的这种类型的
7、值赋给它。 建议:除非万不得已 ,不要使用隐式变量,还是用显式变量。 方法: void show(int x) return;/该语句可要可不要。 private int addValues(int leftHandSide, int rightHandSide) expression.Text = leftHandSide.ToString() + “ + “ + rightHandSide.ToString(); return leftHandSide + rightHandSide; 改迚上面例子的方法,由不返回值变成返回值的方法。 可以省去 int outcome语句 ,而 resul
8、t则被单独编写为一个方法,故此可以省略大量语句。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.
9、Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace MathsOperators / / Interaction logic for MainWindow.xaml / public partial class MainWindow : Window public MainWindow() InitializeComponent(); private void calculateClick(object sender, RoutedEventArgs e) int calc
10、ulatedValue = 0; try int leftHandSide = System.Int32.Parse(lhsOperand.Text); int rightHandSide = System.Int32.Parse(rhsOperand.Text); if (addition.IsChecked.HasValue showResult(calculatedValue); else if (subtraction.IsChecked.HasValue showResult(calculatedValue); else if (multiplication.IsChecked.Ha
11、sValue showResult(calculatedValue); else if (division.IsChecked.HasValue showResult(calculatedValue); else if (remainder.IsChecked.HasValue showResult(calculatedValue); catch (Exception caught) expression.Text = “; result.Text = caught.Message; private int addValues(int leftHandSide, int rightHandSi
12、de) expression.Text = leftHandSide.ToString() + “ + “ + rightHandSide.ToString(); return leftHandSide + rightHandSide; private int subtractValues(int leftHandSide, int rightHandSide) expression.Text = leftHandSide.ToString() + “ - “ + rightHandSide.ToString(); return leftHandSide - rightHandSide; pr
13、ivate int multiplyValues(int leftHandSide, int rightHandSide) expression.Text = leftHandSide.ToString() + “ * “ + rightHandSide.ToString(); return leftHandSide * rightHandSide; private int divideValues(int leftHandSide, int rightHandSide) expression.Text = leftHandSide.ToString() + “ / “ + rightHand
14、Side.ToString(); return leftHandSide / rightHandSide; /private void divideValues() / / int lhs = int.Parse(lhsOperand.Text); / int rhs = int.Parse(rhsOperand.Text); / int outcome; / outcome = lhs / rhs; / expression.Text = lhsOperand.Text + “ / “ + rhsOperand.Text; / result.Text = outcome.ToString()
15、; / private int remainderValues(int leftHandSide, int rightHandSide) expression.Text = leftHandSide.ToString() + “ % “ + rightHandSide.ToString(); return leftHandSide % rightHandSide; private void showResult(int answer) result.Text = answer.ToString(); /不返回值 private void quitClick(object sender, RoutedEventArgs e) this.Close();