当前位置:首页 > 科技新闻 > Windows编程 > 正文

C#:基本语法总结
2021-09-03 18:16:30

PS:最近学了C#,很多地方和原理和C以及C++是类似的,因此基本语法我只总结了一些相对于不同的定义方式以及一些新的概念。

这里也不再介绍相关编译环境和工程的建立了。

一、Hello World

和其他语言一样,都是从Hello World着手的。

代码:

Console.Write("Hello World!");//不会换行
Console.WriteLine("Hello World!");//会自动换行
Console.ReadKey();//相当于在这里中断

二、三种注释方法

//:多用于给变量注释

/*   */:多用于大段文本注释

///:多用于给类和方法注释

三、变量

变量的概念、语法、使用规则和命名规则这里不在介绍了,和C以及C++几乎是一样的。

命名规范:驼峰命名法

要求变量名首单词的首字母小写,其余每个单词的首字母大写。

例如: time, playerName, vipLevel,myNameIsMonkey

基本类型和C也差不多,但是区别在于:

float类型:单精度小数类型, 既能存储整数,又能存储小数,值后面需要加上一个 f。

string类型:和C++几乎一样。

四、运算符合表达式(和C、C++一样,不再赘述)

五、占位符

用途:让字符串与变量连接更舒服。

1.语法结构
先挖坑{0},{1},{2}, 再填萝卜(变量)进坑。

2.注意事项
①你挖了几个坑,就应该填几个萝卜;
如果你多填了萝卜,没效果;
如果你少填了萝卜,抛异常。
②输出顺序;
按照挖坑的顺序输出,另外萝卜是有位置顺序的。

例如:

Console.WriteLine("我的名字:{0},我今年:{1}", name, age);

六、用户输入与转义符

用户输入:Console.ReadLine();

转义符:

:表示换号
”:表示一个英文半角的双引号
:表示一个 tab 键的大空格
:表示一个 BackSpace 退格键,会把前面的一个字符删掉
\:表示一个
@:用在字符串的前面,有两种用途。
①取消“”在字符串中的转义作用,使其单纯的就表示一个斜线[多用于路径]
②将字符串按照原格式输出

七、类型转换

强制类型转换和隐式转换不再赘述。

Convert 类型转换

两个变量的类型如果相兼容,可以使用自动类型转换或者强制类型转换。如果两个变量的类型不兼容,比如 string 和 int,string 和 double。这个时候我们可以用 Convert 进行转换。

注意: 使用 Convert 进行类型转换,也需要满足一个条件,条件就是“面子上要过得去”

Convert.ToInt32();
Convert.ToDouble();

八、分支结构之 if和switch语句

不再赘述,和C、C++一样

 九、循环语句

不再赘述,和C、C++一样

十、数组的定义及遍历(这里只介绍不同之处)

定义及初始化:

数据类型[] 数组名 = new 数据类型[数组长度];
数组初始化完成后,各种类型的数组的默认值:
int[], 元素的值默认都是 0;
float[], 元素的值默认都是 0;
double[],元素的值默认都是 0.0;
string[], 元素的值默认都是 null;
bool[], 元素的值默认都是 false;

for的遍历方式和C一样,这里介绍C#独有的:foreach遍历

foreach(数组数据类型 临时变量 in 数组名)
{
Console.WriteLine(临时变量);
}

十一、数组之内存结构

1.值类型与引用类型
值类型
int,float,double,bool,char
内存:值类型的值存储在内存的
演示:int 类型变量间传值 int a = 10; int b = a;
注意:这个时候单独修改 b 的值,a 的值不会发生改变,这种传递叫做值传递。
这个时候变量之间的传递就是拷贝一个具体的值给对方。

引用类型
数组,字符串
内存:引用类型的值存储在内存的
演示:int 数组类型变量间传值 int[] intA = new int[]{00,111,222,444};
int[] intB = intA;
注意:这个时候单独修改 intB 中元素的值,intA 的值是会发生改变,这种传递
叫做引用传递。
这个时候变量之间的传递就是拷贝一个地址给对方。

2.数组的内存结构
数组在内存中是一块连续的存储空间存储的。
最低的地址对应第一个元素,最高的地址对应最后一个元素。

十二、数组之二维数组

1.二维数组基本语法
1.声明与初始化
声 明:数据类型[,] 数组名;
初始化:数组名 = new 数据类型[行数,列数];
声明,初始化二合一格式:
数据类型[,] 数组名 = new 数据类型[行数,列数];
2.赋值与取值
赋值:数组名[下标,下标] = 值;
取值:数组名[下标,下标];

3.声明初始化赋值三合一:
数据类型[,] 数组名 = new 数据类型[,] { {0,0,0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1,1,1} };

2.二维数组的遍历
for 循环嵌套
数组名.GetLength(轴向下标); //可以获取某个轴向的元素个数。

int[,] a = new int[3,4] {{0,0,0,0},{1,1,1,1},{2,2,2,2} };
            for (int i = 0; i < a.GetLength(0); i++)
            {
                for(int j = 0;j < a.GetLength(1); j++)
                {
                    Console.WriteLine(a[i, j]);
                }
            }
        }

十三、函数

这里概念不再赘述了。。。

函数的声明与调用

1.Pascal 命名法
帕斯卡命名规范,要求每个单词的首字母都要大写,其余字母小写。
用途:多用于给类或者函数(方法)命名。
例如:ReadLine,ReadKey,ToDouble,ToInt32

2.函数的声明(语法)

static 返回值类型 函数名([参数列表])
{
函数代码体;
}

说明:
static:静态标识符;
返回值类型:如果不需要返回值就写 void,就是无返回值的意思;
函数名:当前功能函数的名字,要符合 Pascal 命名规范;
参数列表:如果不需要参数,小括号中可以直接留空;
如果需要参数,要以:参数类型 参数名 的形式书写;

函数的调用:函数名([实际参数]);

注意:如果函数只声明不调用,则函数中的代码不会被执行。

函数的参数与返回值:不再赘述。

函数重载

概念:函数的名称相同,但是参数列表不同。调用该函数的时候,会根据不用的参数,自动选择合适的函数重载形式。

参数不同的情况
①如果参数的个数相同,那么参数的类型就不能相同;
②如果参数的类型相同,那么参数的个数就不能相同。
注意:函数的返回值和重载没有关系

ref参数

1.作用
将一个变量传入一个函数中进行“处理”,“处理”完成后,再将“处理”后的值带出函数。

2.要求
函数外必须为变量赋值,而函数内可以不赋值。

3.语法
形参和实参前面都要加 ref 关键字。
例如:Add(ref num); static void Add(ref int num);

out 参数

一个函数中如果返回多个不同类型的值,就需要用到 out 参数。

2.要求
函数外可以不为变量赋值,而函数内必须为其赋值。

3.语法
形参和实参前面都要加 out 关键字。
例如:

Number(a,b, out max, out min);
static void Number(int a, int b, out int max, out int min);

 

本文摘自 :https://blog.51cto.com/u