C#基础知识学习手记1

时间:2023-03-08 17:08:12

这篇随笔主要用来记录我在C#学习过程做的笔记,算作是一门课程中的小知识点吧。

1. 变量和表达式                        

1.1 如何在输出带有引号(英文双引号、英文单引号)以反及斜杠(“\”)等字符?

(1)使用转义序列

例如,要求输出:He's a "dog"! 这里面包含了英文字符单引号后双引号,利用转义序列 “ \' ” 和 “ \" ” 对它们进行处理:

 Console.WriteLine("He\'s a \"dog\"!");

当然也可以用“\”加上述字符的Unicode值来实现,例如:“ ' ”的Unicode值为0x0027,“ " ”的Unicode值为0x0022

 Console.WriteLine("He\u0027s a \u0022dog\u0022!");

该语句与上面的语句等价。

再例如,要求输出一个路径名:C:\xyz\a,按照上面转义字符的用法,“\”的Unicode值为0x005C

 Console.WriteLine("C:\\xyz\\a");
Console.WriteLine("C:\u005Cxyz\u005Ca");

两个语句等价。

(2)使用“@”字符

对于上面使用转义序列输出特殊字符,语句的可读性很差,这里使用@字符简化语句,如上面的路径名:

 Console.WriteLine(@"C:\xyz\a");

但是在@后接的输出字符串中对双引号有限制:如:输出“ "Dog" ”,利用@字符会失效:

 Console.WriteLine(@" "Dog" "); 

该语句在编译时会出现错误。并且在@后接的输出字符串中就不能在用转移序列了,即下面这条语句也是编译不通过的

 Console.WriteLine(@" \"Dog\" "); 

但是@字符对输出单引号是没有影响的,比如

 Console.WriteLine(@" He's name is X. ");

1.2 char型变量做运算?

两个char型变量能否做加减运算?结果又是什么呢?

例如:

 char a = 'A';
char b = 'B';
Console.WriteLine(a + b);

上述代码是正确的,输出结果为:

char型变量实际上存储的是数字(上面例子中‘a’的ASCII码值为65,‘B’为66),把两个char型变量相加(实际为两个ASCII码相加),也是得到一个数字(结果类型为int型)。同理,两个char型变量也是按照如此规则做减法、乘法和除法运算。


1.3 运算符“++”和“--”所在位置对变量存储值的影响?

例如:

 int val1 = , val2 = ;
int val3, val4;
val3 = val1++;
val4 = ++val2;
Console.WriteLine("val1 = {0}, val2 = {1}", val1, val2);
Console.WriteLine("val3 = {0}, val4 = {1}", val3, val4);

输出结果为:

val1 = 3,  val2 = 6

val3 = 2,  val2 = 6

从结果可以看出,运算符“++”总是将变量的值增加了1,但是它的位置决定了其发挥作用的时间。在变量左边时,它是在变量参与其他运算之前将变量值加1,在变量右边时,它是在变量参与其他运算之后才将变量值加1.同理,“--”的作用也是如此。