visual C#(二)变量、操作符和表达式

参考书:《 visual C# 从入门到精通》
第一部分 Visual C# 和Visual Studio 2015概述
第2章 变量、操作符和表达式

2.1 理解语句

2.2 使用标识符

C#一共保留了77个关键字。

2.3 使用变量

2.3.1 命名变量

变量命名的一些建议:

  • 不要以下划线开头,虽然在C#中合法
  • 不要创建仅大小写不同的标识符
  • 名称以小写字母开头
  • 多个单词的标识符第二个单词开始每个单词首字母大写(camelCase记号法)
  • 不要使用匈牙利记号法

2.3.2 声明变量

int age;

2.4 使用基元数据类型

C#的常用的基元数据类型如下:

  • int 整数 32 位
  • long 整数 64
  • float 浮点数 32
  • double 双精度浮点数 64
  • decimal 货币值(比double更高的精度和更小的范围) 128
  • string 字符序列 每字符16位
  • char 单字符 16
  • bool 布尔值 8

2.4.1 未赋值的局部变量

C#不允许使用未赋值的局部变量,使用的话会无法编译,即 明确赋值规则。

2.4.2 显示基元数据类型的值

接下来我们新建一个通用Windows平台应用程序,需要用到ListBox控件,给ListBox控件添加一个SelectionChanged事件命名为typeSelectedChanged,ListBox内添加9个ListBoxItem对应C#的9个常用基元数据类型。

typeSelectedChanged方法如下:

private void typeSelectedChanged(object sender, SelectionChangedEventArgs e)
        {
            ListBoxItem selectedType = (type.SelectedItem as ListBoxItem);
            int ivar = 5;
            long lvar = 555;
            float fvar = 0.42F;
            double dvar = 0.42;
            string svar = "ssss";
            char cvar = 's';
            decimal decvar = 0.42M;
            bool bvar = true;

            switch (selectedType.Content.ToString())
            {
                case "int":
                    textShow.Text = ivar.ToString();
                    break;
                case "long":
                    textShow.Text = lvar.ToString();
                    break;
                case "float":
                    textShow.Text = fvar.ToString();
                    break;
                case "double":
                    textShow.Text = dvar.ToString();
                    break;
                case "string":
                    textShow.Text = svar;
                    break;
                case "char":
                    textShow.Text = cvar.ToString();
                    break;
                case "decimal":
                    textShow.Text = decvar.ToString();
                    break;
                case "bool":
                    textShow.Text = bvar.ToString();
                    break;
            }
        }

具体的步骤不是很难,所以我就不一步步讲解了(就是想偷个懒,注意要先拖入一个Grid控件作为容器再拖入ListBox控件,否则运行的时候会不显示ListBox控件)。最终是要达到下面的效果:
在这里插入图片描述

2.5 使用算术操作符

2.5.1 操作符和类型

不同的操作符适合的数据类型是各不相同的。如string只能使用加法操作符。

字符串插值

第一章我们有给出过这样的代码:MessageDialog msg=new MessageDialog("Hello "+userName.Text);;字符串插值允许改用这样的代码: MessageDialog msg=new MessageDialog($"Hello {userName.Text}");$符号表明这是插值字符串,花括号中的任何表达式都需求值并置换。由于.Net Framework处理字符串的方式,用+来连接字符串可能会消耗大量内存,所以用字符串插值比+高效很多。

算术运算的结果取决于操作数的类型。两个操作数类型都是double,结果也是double。都是int结果也是int,5/2结果是2,C#对值是向下取整。若是5/2.0,分别是int和double值,C#自动生成代码将int转换成double再执行计算,结果是2.5(double)。通常不建议这样做。C#还支持取(模)余操作符%,如9%2结果是1。另外double和float有一个可以表示无穷大的值Infinity,如表示5.0/0.0,但如果表达式为0.0/0.0,结果是NaN(not a number)。

2.5.2 深入了解算术操作符

这里我们又要新建一个空白应用,要达到如下的效果
在这里插入图片描述

难度并不大,主要的控件是TextBlock,TextBox,ListBox(其中的元素是RadioButton,单选框),Button。代码上只要建立Button的Click事件的响应方法就行了。虽然我实际操作的时候废了不少功夫,其实拖放控件不熟练的话都是挺费工夫的。Button的Click事件的响应方法如下:

private void cal(object sender, RoutedEventArgs e)
        {
            RadioButton test;
            test = l1.IsChecked.Value ? l1 : l2.IsChecked.Value ?l2 : l3.IsChecked.
                Value ? l3 : l4.IsChecked.Value ? l4 : l5.IsChecked.Value ? l5 : l1;
            int lhs = int.Parse(lhsOperand.Text);
            int rhs = int.Parse(rhsOperand.Text);
            int outcome=0;
            string exp="";
            switch (test.Content.ToString()){
                case "+Addition":
                    outcome = lhs + rhs;
                    exp = $"{lhs}+{rhs}";
                    break;
                case "-Subtraction":
                    outcome = lhs - rhs;
                    exp = $"{lhs}-{rhs}";
                    break;
                case "*Multiplication":
                    outcome = lhs * rhs;
                    exp = $"{lhs}*{rhs}";
                    break;
                case "/Division":
                    outcome = lhs / rhs;
                    exp = $"{lhs}/{rhs}";
                    break;
                case "%Remainder":
                    outcome = lhs % rhs;
                    exp = $"{lhs}%{rhs}";
                    break;
            }
            expText.Text = exp;
            resultText.Text = outcome.ToString();
        }

其中比较意想不到的是,ListBox容器中的每个RadioButton都要命名,不然没办法知道其中哪个单选项被选中,正是因为这个问题耽误了我不少时间。

2.5.3 控制优先级

这个懂得都懂,利用圆括号改变表达式的优先级。

2.5.4 使用结合性对表达式进行求值

当表达式中的多个操作符具有相同优先级时,就需要用到结合性的概念。结合性指操作数的求值方向。如4/2*6,操作符*/都具有左结合性,所以结果是4/2*6=2*6=12

2.5.5 结合性和赋值操作符

所有操作符都会根据操作数返回一个值,赋值操作符=返回赋值给左操作数的指。所以可以出现这样的代码:myInt5=myInt4=myInt3=myInt2=myInt=10;

2.6 变量递增和递减

cout++;
++cout;
cout--;
--cout;
这个同C++。

2.7 声明隐式类型的局部变量

用关键字var让编译器根据变量的初始值来推断变量类型,该变量即为隐式类型变量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值