系列文章目录
C#学习笔记(入门)
文章目录
一、C#入门简介
1、与C/C++对比
C#程序需要依附在.NET平台才能运行。
C/C++:编译器将代码转换成机器指令。
C#:编译器将代码转换为IL中间语言;然后程序运行时由.NET平台的CLR动态的转换成机器指令;好处是:提升开发效率,因为程序很大时,代码编译成机器指令是很耗时的;缺点:性能没有C/C++高。
2、.NET平台
.NET Framework 1.0 2.0 3.0…最新是4.8版本,目前已不更新;只能在Windows运行,不能在mac、linux运行。
.NET CORE 可以跨平台。
3、程序运行起始点
所有的代码都是直接或者间接的从Main方法开始运行,是程序的入口点。
二、变量
1、变量的声明
① 变量的类型 变量名称 = 初始值;声明变量就是申请内存,给数据分配内存,内存地址为变量名。
② var 是C#的语法糖,它可以自动推断出数据类型。
③ 内存里面存储的数据会转换成二进制类型。
④ 声明变量时未赋值,C#会根据变量类型给其一个初始值。
2、变量的运算
① bool只有两种值,true和false;if条件判断()中即为bool值。
② 不同变量类型运算要统一类型。
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字:");
string str = Console.ReadLine();// 返回类型为string
int num = int.Parse(str) + 100;// 输入100,得到200
string str1 = str + 100.ToString();// 字符串前后相加还是字符串(拼接),输入100会得到100100字符串
Console.WriteLine(num);
Console.WriteLine(str1);
}
}
}
三、面向对象
1、try catch
将有可能报错的代码写到try catch中,去抓住该错误。
int age = 0;
bool ischeck = true;
for (; ischeck ; )
{
Console.WriteLine("请输入你的年龄:");
string str2 = Console.ReadLine();
try
{
age = int.Parse(str2);
ischeck = false;
}
catch
{
Console.WriteLine("请输入一个正确的年龄!");
}
}
2、类及其成员访问级别
如果一个类中的属性、方法、事件等不加public修饰符,外界是不能访问的,即默认是私有的private,在该类的内部是可以访问这些内容;如果一个类名前没有加public,那这个类默认访问权限为internal——访问仅限于当前程序集;而private类,只能在该类所在的名称空间下调用,其他名称空间无法访问到该类。
3、类的属性和变量
类中的实例属性(变量)是针对单个个体来说,即为对象服务,使用时要先实例化;而静态属性(变量)(加static修饰符)是针对整体来说,即为这个类服务,可以直接调用类访问,不需要实例化。
4、类的剥离
一个名称空间下的类太多了,可以剥离出来不同的类;一个类的内容太多,可以使用partial类分割。
一个名称空间下的类是可以相互访问的;一个类要去访问其他名称空间下的类,需要包含其名称空间(使用using),并且所访问的那个类还需要是public。
5、动态链接库文件(dll)
由类库生成的dll文件,要想被其他文件引用,并访问其中的类时,该类是需要public的;注意:类库项目是不能直接运行的。
四、文件操作相关实操
namespace ConsoleApp2
{
internal class Program
{
static void Main(string[] args)
{
string path = @"C:\Users\HXJ\Desktop";
DirectoryInfo directoryInfo = new DirectoryInfo(path);
FileInfo[] files = directoryInfo.GetFiles();
for (int i = 0; i < files.Length; i++)
{
Console.WriteLine(files[i].FullName);
Console.WriteLine(files[i].Name);
if (files[i].Name == "文件操作.txt")
{
// 删除指定文件
File.Delete(files[i].FullName);// FullName属性为返回完整目录
Console.WriteLine(files[i].Name + "已经被删除");// Name属性返回文件名称
}
bool isHave = files[i].Name.Contains("文件操作1");
if (isHave)
{
// 更改指定文件名
Console.WriteLine($"{files[i].Name}");// $ 特殊字符将字符串文本标识为内插字符串,等同于下面的语句
Console.WriteLine("{0}", files[i].Name);
string srcFileName = files[i].FullName;
string destFileName = files[i].Directory.FullName+"\\文件操作3.text";
File.Move(srcFileName, destFileName);
Console.WriteLine("文件名已经被修改!");
}
}
}
}
}