文章目录
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)
如有错误,请批评指正
有想了解更多可访问其博客,谢谢!!
如有侵权,请联系作者,会在第一时间修正删除