文章目录
C#基础(一)
基本介绍
C#的特点
-
C#是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言
-
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性
-
C#是面向对象的编程语言
.NET 与.NET Framework
.NET 框架是一个创建、部署、运行应用系统的多语言平台环境语言
.NET Framework是微软为开发应用程序而创建的一个平台,利用它,你可以开发Windows桌面应用程序,Web应用程序,Web服务以及其它类型的应用程序。.NET Framework的设计方式确保它可以用于各种语言,包括C#,C++,Visual Basic, JScript等。
Visual Studio 安装
Mirosoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集。是编写C#程序或者说.NET程序最常用的开发工具。因其功能强大、简单易用、速度快、智能度高。被网友戏称宇宙第一IDE。
1.下载请到官网下载,地址可百度,根据需要下载对应版本,社区版免费
2.vs安装对网络有要求,如安装失败或下载失败或速度较慢可百度,有很多解决方法就不一一赘述
3.根据自己需要安装模块,一般选择“ASP.NET开发”、“.NET桌面开发”、“通用Windows平台开发”、“数据库存储和处理”、“Visual Studio扩展开发”,当然,如果后续需要在安装别的还可以打开该安装程序安装、更新。
C#特点
支持多线程
相较于C与C++,C#对指针的使用有限制
自动内存分配、垃圾回收
基本操作
注意:
- C#大小写敏感的。
- 所有的语句和表达式必须以分号
;
结尾。 - 与Java不同的是,文件名可以不同于类的名称。
- 代码块在
{}
内表示
C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种对象组成。相同种类的对象通常具有相同的类型。
console.read()——输入一个字符
console.readline()——输入一行字符串
console.write()——输入一个数据或一个字符串
console.writeline()——输入一个字符串并且换行
强制类型转换
int.parse()、double.parse()、Convert.Toint()等等
注意
Convert.Tolnt32(double value)遵守四舍五入,而parse则向下取整
,但:
Convert.Tolnt32(double value)
,不完全遵循四舍五入,如果value为两个整数中间的数字,则返回二者中的偶数,
对比下面的例子:
Console.WriteLine(Convert.ToInt32(4.3));//四舍五入,输出4
Console.WriteLine(Convert.ToInt32(4.5));//第一位小数为5时,4. 5在4和5之间,输出偶数4
Console.WriteLine(Convert.ToInt32(4.53)); //四舍五入,输出5
Console.WriteLine(Convert.ToInt32(5.3));//四舍五入,输出5
Console.WriteLine(Convert.ToInt32(5.5)); //第一位小数为5时,5.5在5和6之间,输出偶数6
Console.WriteLine(Convert.ToInt32(5.53)); //四舍五入,输出6
注意:
ConvertToInt32()
和int.Parse()
对于空值(null
)的处理不同,ConvertToInt32(null)
会返回0而不会产生任何异常,但int.Parse(null)
则会产生异常。
基本语法
简单规范
注意:
-
C#大小写敏感的。
-
所有的语句和表达式必须以分号
;
结尾。 -
与Java不同的是,文件名可以不同于类的名称。
C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种对象组成。相同种类的对象通常具有相同的类型。
关键字,是对编译器有特殊意义的预定义保留标示符,它们不能在程序中用作标示符
-
using关键字
在任何C#程序中的第一条语句都是:
using System;
using
关键字用于在程序中包含命名空间。一个程序可以包含多个using
语句。 -
class关键字
class关键字用于声明一个类。
-
C#的注释方式
- // 单行注释
- /**/ 多行注释
- /// 文档注释
- 注释的作用:
-
解释:说明代码作用
-
注销:将暂时不需要的代码注销
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fKllL5y3-1653398872869)(/image-20220517210132955.png)]
要注意几件事,对于代码的规范性要有要求:
- 代码注释是一定要写的,有句话叫不写注释那就是耍流氓
- 对于名称的命名,需要注意规范命名方法,驼峰命名法是一个很好地选择,命名要见文生义
数据类型
其中,值类型数据存放在栈中
引用类型数据则为一个指针,指向堆中存放地址。指针源于c语言,指向内存地址
变量
-
变量是一个供程序存储数据盒子。在C#中,每个变量都有一个特定的类型,不同类型的变量其内存大 小也不尽相同。
-
C# 中提供的基本类型大致分为以下几类:
类型 举例 整数类型 byte、short、int、long 浮点型 float、double 十进制类型 decimal 布尔类型 bool 字符类型 string、char 空类型 null表达式
表达式
-
表达式由**操作数(operand)和运算符(operator)**构成。运算符的示例包括
+
、-
、\*
、/
和new
。操作数的示例包括文本、字段、局部变量和表达式。 -
当表达式包含多个运算符时,运算符的优先级(precedence)控制各运算符的计算顺序。例如,表达式
x + y * z
按x + (y * z)
计算,因为*
运算符的优先级高于+
运算符。 -
(了解)大多数运算符都可以重载(overload)。运算符重载允许指定用户定义的运算符实现来执行运算,这 些运算的操作数中至少有一个,甚至所有操作数都属于用户定义的类类型或结构类型。
-
下表总结了C#简单常用的运算符,并按优先级从高到低的顺序列出各运算符类别。同类别中的运算符 优先级相同。
类别 | 表达式 | 说明 |
---|---|---|
基本 | x.m | 成员访问 |
x(...) | 方法和委托调用 | |
x[...] | 数组和索引器访问 | |
newT(...) | 对象和委托创建 | |
newT(...){...} | 使用初始值设定项创建对象 | |
new{...} | 匿名对象初始值设定项 | |
newT[...] | 数组创建 | |
++x | 前增量 | |
--x | 前减量 | |
x++ | 后增量 | |
x-- | 后减量 | |
(T)x | 将x显示转换为类型T | |
二元 | x * y | 乘法 |
x / y | 除法 | |
x % y | 取余 | |
x <= y | 小于或等于 | |
x >= y | 大于或等于 | |
x == y | 等于 | |
x != y | 不等于 | |
x & y | 整形按位与 ,布尔逻辑AND | |
x 1 y | 整形按位或 ,布尔逻辑OR | |
x && y | 且,当 x 为true 时,才对 y 求值 | |
x 11 y | 或,当 x 为false 时。才对 y 求值 | |
三元 | x ? y : z | 如果 x 为true ,对 y 求值,x 为false ,对 z 求值 |
分支语句
if 语句
if-else 语句
switch 语句
循环语句
for循环
for(int i = 0; i<10;i++ ){ }
while循环
while(true){ }
do-while循环
do{ }while(true)
数组
-
数组是一组相同类型的数据。
-
数组中的数据需要通过数字索引来访问。
数组的声明
-
数组的声明需要使用
new
关键字。 -
在声明数组时,可以使用
{}
来初始化数组中的元素。 -
如果在数组声明之初没有使用大括号来初始化数组中的元素,则需要指定数组的大小。
-
在声明初始化有元素的数组时,也可以指定数组大小。
//声明没有元素的数组
int[] ints = new int[6]
//声明初始化有元素的数组
int[] ints = new int[]{1, 3, 4, 5}
//在声明初始化有元素的数组时,也可以指定数组大小
string[] strings = new int[5]{"H", “E", "L",“L","0"}
通过索引获取数组中的元素。
- 给数组指定长度时,数组准备存放多少元素,长度就设置为多少。
- 用索引获取数组内的元素时,索弓|从0开始获取。
- 所以数组中最大的索引数字,比指定数组长度小1。
//声明初始化有元素的数组
int[] ints = new int[]{1, 3,4,5}
//获取数组中第1个的元素。
int i1 = ints[0];
//给数组内的元素赋值
ints[0] = 1
标识符和关键字
-
标识符的构成字母、数字、下划线、unicode字符组成
-
开头不能是数字
-
不能与关键字重名,区分大小写
-
允许标识符以@作为前缀
@
可用于取消转义,于\
的作用相同,但其只要在引用部分之前加上即生效
@"D:\Tencent Files\2482608252\FileRecv"
等效于 "D:\\Tencent Files\\2482608252\\FileRecv"
扩展
ref与out
**ref 关键字使参数按引用传递。**其效果是,当控制权传递回调,用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
**out 关键字会导致参数通过引用来传递。**这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
同:
1、都能返回多个返回值。
2、若要使用 ref 和out参数,则方法定义和调用方法都必须显式使用 ref和out 关键字。在方法中对参数的设置和改变将会直接影响函数调用之处(参数的初始值)。
异
1、ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化;
2、out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。
个人理解:ref与out相当于指针的调用,ref调用指针指向原地址,修改数据,但要注意,一定要是初始化赋值
的地址;out则先删掉原指针地址数据,要求传递的只是这个地址,所以无需赋值,并要求在方法中必须赋值
ref正确用法
class Program
{
static void Main(string[] args)
{
Program pg = new Program();
int x = 10;
int y = 20;
pg.GetValue(ref x, ref y);
Console.WriteLine("x={0},y={1}", x, y);
Console.ReadLine();
}
public void GetValue(ref int x, ref int y)
{
x = 521;
y = 520;
}
}
out正确用法
class Program
{
static void Main(string[] args)
{
Program pg = new Program();
int x=10;
int y=233;
pg.Swap(out x, out y);
Console.WriteLine("x={0},y={1}", x, y);
Console.ReadLine();
}
public void Swap(out int a,out int b)
{
int temp = a; //a,b在函数内部没有赋初值,则出现错误。
a = 521;
b = 520;
}
}
ref与out部分Demo引用自:总结ref和out的区别_萝卜头敲代码的博客-CSDN博客_out ref
全文主要引用
C#(笔记本)——第一章_lucid_dreamings的博客-CSDN博客
以及
babbittry/Csharp-notes: C# 课程笔记 (github.com)
如有错误,请批评指正
有想了解更多可访问其博客,谢谢!!
如有侵权,请联系作者,会在第一时间修正删除