1、Console.ReadLine();等待用户输入一行字符串后按下回车,一次读入一行。
2、Console.ReadKey();等待用户输入一个字符(任意键),一次读入一个字符。常加在程序的结尾处,方便调试的时候,控制台窗口能暂停等待用户输入,而不会一闪而过。
3、C#条件表达式为 条件表达式 ? 分支1 : 分支2 。条件表达式为真时,输出分支1的结果;条件表达式为假时,输出分支2的结果。
4、switch结构:
(1)、变量(op)与每一个 case 后面的常量进行等值比较,如果相等,就执行对应的分支。执行分支以后, break 关键字会使 switch 结构中止,不会再判断后面的常量。如果变量与所有的常量都不相同,则执行 default 后面的分支。
(2)、switch() 中的变量可以是 :int 、 string、bool、char、enum 等,必须是一个定值。其应用实例如下:
switch (op)
{
case "a":
result = num1 + num2;
break;
case "s":
result = num1 - num2;
break;
case "m":
result = num1 * num2;
break;
case "d":
if (num2 != 0)
{
result = num1 / num2;
}
break;
default:
break;
}
5、字符串中的占位符及字符串内插(控制内插表达式的格式)
Console.WriteLine("今天是{0}年{1}月",2019,3);
//{0},{1}分别为两个变量的占位符,代表后面的两个变量。
//输出的结果:今天是2019年3月。
string Name="jeff";
Console.WriteLine($"他的名字是{Name}");
//此处{Name}为变量的上面变量的引用,
//将输出:他的名字是jeff
6、输出方式:
static void Main(string[] args)
{
string[] name = {"A","B","C","D","E","F","G"};
int[] score = { 80, 90, 98, 68, 94, 66, 86 };
int temp = score[0], j = 0;
for(int i = 0; i < name.Length-1; i++)
{
if (score[i] >= score[i + 1])
{
temp = score[i];
j = i;
}
}
Console.WriteLine("{0} 是最高分,成绩为:{1}", name[j], temp);
//{0},{1}为占位符,后面的name[j],temp 为其实参值。
Console.WriteLine(name[j] + " 是最高分,成绩为: " + temp);
Console.WriteLine($"{name[j]} 是最高分,成绩为 {temp}");
//$符号,后面的{}中的内容为该变量的值。
Console.ReadKey();
}
7、nameof 运算符返回任何:变量、类型或类型成员的名称:
using System;
using System.Collections.Generic;
namespace Practice01
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(nameof(System.String));
int j = 5;
Console.WriteLine(nameof(j));
List names = new List();
Console.WriteLine(nameof(names));
string s = "this is a test";
Console.WriteLine(s);
Console.ReadKey();
}
}
}
8、使用 static 修饰的变量为静态变量,意味着该变量是这一类的所有对象所共享。非静态变量的值则对于这一类的每一个对象是唯一的。
private static int s = 12345678;
9、out 参数的使用,用来表示转化是否成功。int.TryParse(input, out int result) 返回值为bool类型,表示转化是否成功。
static void Main(string[] args)
{
var input = "123456";
if (int.TryParse(input, out int result)) //将用字符串表示的数字(input变量的值),转换成整型数字。
{
Console.WriteLine(result);
}
else
Console.WriteLine("Could not parse input");
Console.ReadKey();
}
10、var 和 object 关键字。
11、is 运算符,判断某一变量是否为该类型。
object s = 20;
if(s is int number) //判断s是否是整型的值,在此处定义了一个整型值number
//等价于 if(s is int)
{
Console.WriteLine(s.GetType());
Console.WriteLine($"The value of s is: {number}");
}
else
Console.WriteLine($"{s} is not a int");
12、GetType() 函数返回变量的类型
var s = "This is just a test." ;
Console.WriteLine(s.GetType()); //将返回变量s的类型。
13、Lambda 表达式: => 。(参数列表)=>表达式或语句块
14、@ 字符的作用是:除了 \" 外,让其他的任何转义字符都不会再起作用。
string str1 = "hello this is \n a test !";
Console.WriteLine(str1);
//当在前面加上@时,会让转义字符不再生效
string str1 = @"hello this is \n a test !";
Console.WriteLine(str1);
二、循环结构
1、while 循环,当条件表达式为真时,进行循环操作。
while (条件表达式)
{
循环语句
}
2、for循环常用于已知循环次数时。
for(变量声明和赋值;循环条件;变量自加)
{
循环体
}
3、do.......while循环,第一次执行循环体是没有经过条件判断的,后面再执行需要先判。如下所示:
int sum = 0, x = 10;
do
{
sum += 2;
x++;
} while (x < 20);
三、数组
1、一维数组的声明方式: 数据类型[ ] 数组名 = new 数据类型[长度];
//长度为3的字符类型数组的几种声明方式
char[] a=new char[3];
char[] d=new char[3]{'A','B','C'};
char[] b=new char[]{'A','B','C'};
char[] c={'A','B','C'};
数组经过初始化以后,数组元素有默认的初始值, double 类型为 0.0 , int 类型为 0 , char 类型为 'a' , bool 类型为 false , string 类型为 null 。 数组名.Length 会返回数组的长度(即数组元素的个数)。
2、访问数组
(1)通过for循环
(2)foreach关键字
int[] array = {1,2,3,4,5,6};
foreach(int x in array)
{
Console.Write(x+" ");
}
3、二维数组的声明与访问
int[,] array = new int[2,3];
//声明了一个二维数组。表示2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素
array[0,2] = 66;//为二维数组的第一行,第3列赋值
int[,] s = new int[4,2] {{60,70},{80,90},{100,101},{102,103}};
//定义了一个4行2列的二维数组,表示4个一维数组。
for(int j=0; j
参考资料:
[1] C# Console.ReadLine() 与 Console.ReadKey() 用法