第02讲:【回顾】C#编程核心语法汇总强化与常见问题分析

1、关于变量

【1】变量类型:

局部变量(在方法内部使用的变量,只能给这个方法自己使用)(随着方法执行完毕而销毁)

成员变量(方法外面、类的内部定义的,可以被类的内部其他方法使用) 随着对象销毁而销毁

全局变量(一般是public static修饰的)也就是说,其他任何类都可以通过《类名.全局变量名》

【2】变量使用

注意问题:变量使用时不能超出作用范围,也必须要先赋值,因为我们使用的变量,要求必须有一个明确值。

在字符串中:a = “” b = string.Empty是一样的,但它们和string b=null;是不一样的。

string a; string b=null;

如果我们定义一个字符串变量,什么都没赋值,默认是null,以上虽然a和b都是null,但是有区别:null虽然是空值,但是这个是有赋值的过程。而a是没有赋值的。string c=a+"您好"; int lenght=a.Length; 直接使用未赋值的变量a时会报错。

【3】变量命名

在C#规范里面,变量命名是遵循的命名法是:camel命名法(首字母小写:studentName)

2、关于常量:

【1】使用:固定不变的值,可以定义为常量,在数学模型中经常使用。(做上位机的学员,经常使用)

【2】命名:一般都是大写(为了很好区分)

3、关于枚举

【1】为什么要用枚举?

我们知道,变量可以根据需要定义,来表示我们使用的数据。但是对于我们经常使用的,并且固定的几个值如果我们都定义成变量,使用和不方便,为什么?因为不好记忆!所以,把这几个有限的值,定义成枚举后通过VS智能提示,可以更加轻松的让我们使用。比如:MessageBox CommandType .....

【2】枚举定义的注意事项

  • 第一,必须是有限个(不能太多,一般2-5个,6-10,11-20个)
  • 第二,枚举表示的是整数。可以相互转换。
  • 第三,枚举我们一般都定义到类外面。因为可以被其他的类使用。

4、关于运算符

【1】常见运算符(自己看预科)

【2】取模运算符(余数)%(在数据分页等都会用到) / 取商

【3】变量自增 num++ 和++mun num-- 和 --num 单独从执行的角度来讲是一样。

 int num=10;
 Console.WriteLine(num++);//输出10
 Console.WriteLine(num);//输出11

 Console.WriteLine(++num);//输出12
 Console.WriteLine(num);//输出12

 for循环中经常用i++

5、关于数据类型转换

自动类型转换:一般是值类型之间(精度小的值类型转换成精度大的值类型!)

static void Method6()
        {
            double a = 10.25;
            int b = 20;
            double result = a + b;
            Console.WriteLine($"【自动类型转换】10.25+20={result}");
            Console.WriteLine("--------------------------------------------------");
        }

引用类型到object类型是可以直接转换的。(但是尽量避免,我们在这个地方也不举例)

强制类型转换:如果自动类型转换不了,必须使用强制转换! (int)reader["列名"]

【1】值类型之间强制转换

static void Method7()
        {
            Console.WriteLine(" \r\n【强制转换1】:(类型名) 表达式  \r\n");
            double a = 10.25;
            int b = 20;
            int result = (int)a + b;  //实现强制类型转换,但是精度会丢失
            Console.WriteLine($"【dobule-->目标int】10.25+20={result} 【精度会丢失】");

            a = 10.50;
            result = (int)a + b;       //实现强制类型转换,但是精度会丢失
            Console.WriteLine($"【dobule-->目标int】10.50+20={result} 【精度会丢失】");

            a = 10.55;
            result = (int)a + b;         //实现强制类型转换,但是精度会丢失
            Console.WriteLine($"【dobule-->目标int】10.55+20={result} 【精度会丢失】");

            Console.WriteLine("--------------------------------------------------");
        }

【2】字符串和值类型之间强制转换

(需要注意的是这个字符串必须是值类型的有效表示形式:“20.5” 可以 “20.A”则不可以)

static void Method9()
        {
            Console.WriteLine(" \r\n【强制转换2】:类型.Parse('字符串')  \r\n");
            //有效类型的【字符串】转成【值类型】要求:字符串的格式必须符合目标类型的有效形式
            double a = double.Parse("20.5");
            float b = float.Parse("20.25");
            int c = int.Parse("20");

            //非有效形式:张三李四   20.2==>int


            //将值类型转成字符串类型,直接使用ToString()方法
            string aa = a.ToString();
            string bb = b.ToString();
            string cc = c.ToString();

            Console.WriteLine($"a={aa},b={bb},c={cc}");
            Console.WriteLine("--------------------------------------------------");
        }

【3】万能转换器(如果你是一个初学者,前面两种方式你可能记不住,如果没有特殊要求,你都可以使用万能转换器)需要注意的一点是:小数部分等于0.5的时候,转换的结果看整数部分:整数部分为奇数时自动进位、整数部分为偶数时不自动进位。

6、关于分支结构

为什么要使用分支结构? 当我们处理的业务,需要有不同情况,这时候就得单独处理,就用到分支结构。

分支结构,是根据不同的条件,执行不同的业务逻辑。

【1】条件分支结构:if 、 if - else 、if -else if-- else ifelse ifelse ifelse ifelse if-else

特别注意:只要是互斥类型判断,就不要使用多个独立的if…

if 条件分支一般在任何情况下都可以做条件判断使用。(范围和具体值都行)

【2】常量分支结构:switch case (等值判断)

switch(表达式)
{
    case 值 1:
        语句块 1;
        break;
    case 值 2:
        语句块 2;
        break;
        ...
    default:
        语句块 n;
        break;
}

7、关于循环结构

【1】循环(for、foreach、while、do while)

for:循环次数固定,不仅是是获取循环内容,可能也会关注循环次序(1、2、3、4、5、….)

foreach:不关心循环次数,特别注重循环内容(也就是元素)、无条件执行。

whlie ():不关心循环次数,特别注重的是循环条件的满足,同时循环过程与循环条件没有任何关系。

forech( var  元素 in  集合)
{
    对元素进行使用。
}

总结:foreach循环是遍历容器中的元素

while(循环条件)
{
   //自定义的业务内容...
}

总结:根据条件是否满足,循环执行某些自定义业务。

while中的循环跳出:break、continue区别

【2】 break、continue和return

break:在循环中和分支结构中使用,表示跳出。

continue:一定是在循环中使用,本次循环没有结束,就开始下一个循环。

return:表示无条件跳出,通常是我们普通的方法中使用,表示后面的代码不执行。

如果return 后面有数据,表示这个方法执行完毕后,返回数据。

if (this.txtStudentName.Text.Trim().Length == 0)
        {
            MessageBox.Show("学生姓名不能为空!", "提示信息");
            this.txtStudentName.Focus();
            return;
        }
        if (this.txtCardNo.Text.Trim().Length == 0)
        {
            MessageBox.Show("考勤卡号不能为空!", "提示信息");
            this.txtCardNo.Focus();
            return;
        }

8、字符串专题

【1】掌握常用的几种方法:

字符串比较方式(a==b a.Equals(b)) == 在我们C#中可以比较《字符串》和《值类型》数据, Equals() 虚方法也是一样的但是以上两种方法不能比较对象,另外在Java中,== 是不能直接比较字符串。

【2】字符串长度的获取:

使用Length属性即可:字符串.Length

获取集合中元素的个数可以使用Count属性,如果是数据库中,我们还会看到Len()函数

C#开发之——获取字符串长度(4.2)_PGzxc的博客-CSDN博客_c# 字符串长度

【3】StringBuilder字符串高效处理

图片[1] - 第02讲:【回顾】C#编程核心语法汇总强化与常见问题分析 - 登山亦有道

9.关于数组

【1】在什么情况下使用数组?固定元素个数的统一存储。

在我们一般开发中, 使用数组的时候很少了。特别的,上位机开发的可能用的多。 byte[]

【2】字符串分割和数组使用配合

分割后,都是放到数组中的。特别对于一些文本的数据处理要用。

10.其他的:

ref(不建议使用) out

private Add(ref int a ,int b)
{

}

© 版权声明
THE END
喜欢就支持一下吧
点赞89赞赏 分享
评论 共12条
匿名的头像 - 登山亦有道
提交
匿名的头像 - 登山亦有道

昵称

在 WordPress 上使用 Sticker Heo 增添互动时的乐趣吧 !

取消
昵称表情代码图片
    • vian的头像 - 登山亦有道
      vian Windows Chrome 104.0.0.0
      • 晨岩的头像 - 登山亦有道
        晨岩 Windows Edge 104.0.1293.70
        • vian的头像 - 登山亦有道
          vian Windows Chrome 104.0.0.0
          • 晨岩的头像 - 登山亦有道
            晨岩 Windows Edge 104.0.1293.70
            • vian的头像 - 登山亦有道
              vian Windows Chrome 104.0.0.0
              • 晨岩的头像 - 登山亦有道
                晨岩 Windows Edge 104.0.1293.70
                  • 晨岩的头像 - 登山亦有道
                    晨岩 Windows Edge 104.0.1293.70
                      • 晨岩的头像 - 登山亦有道
                        晨岩 Windows Edge 104.0.1293.70
    • 叶开楗的头像 - 登山亦有道
      叶开楗 Windows Chrome 104.0.0.0
      • 晨岩的头像 - 登山亦有道
        晨岩 Windows Edge 104.0.1293.70