文件操作(I/O)Path类,File类Path 类(静态)Path 类提供了一系列静态方法,用于处理文件路径字符串。它并不直接操作文件,而是用于路径的格式化、解析和验证。
常用方法
Combine(string path1, string path2)
:将两个路径字符串合并成一个路径。
1string combinedPath = Path.Combine("C:\\example", "myfile.txt");
GetExtension(string path)
:获取指定路径的扩展名。
1string extension = Path.GetExtension("C:\\example\\myfile.txt"); // .txt
GetFileName(string path)
:获取指定路径的文件名(不包含路径)。
1string fileName = Path.GetFileName("C:\\example\\myfile.txt"); // myfile.txt
GetD ...
文件配置Ini文件1,ini文件是个啥?.ini 文件是Initialization File的缩写,即初始化文件,是 windows 的系统配置文件所采用的存储格式,统管 windows 的各项配置,一般用户就用 windows 提供的各项图形化管理界面就可实现相同的配置了。
2,ini文件以什么格式存储数据?[节点名称]key1=value1key2=value2[其它节点]key1=value1key2=value2
3,C# winform项目中如何读写ini文件呢?借助动态链接库kernel32.dll
kernel32.dll是Windows 9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
4,在winform项目中使用一个动态链接库的基本步骤?动态链接库不需要引用,系统自带。
动态链接库提供的功能比较多,说明动态链接库中方法比较多。
a. 先导入 ...
1,protected和protected internalprotected:
访问范围:protected 修饰符表示成员可以被同一类或其派生类(无论这些派生类是否在同一个程序集中)访问。适用场景:当你希望某个成员仅供类本身和任何派生类使用时,可以使用 protected。
protected internal:
访问范围:protected internal 修饰符表示成员可以被同一程序集内的任何代码访问,也可以被其他程序集中的派生类访问。适用场景:当你希望某个成员在同一程序集内完全可见,但在不同程序集中的派生类也能访问时,可以使用 protected internal。
2,子类和父类转化子类能转换成父类 father = child √父类不能转换成子类 child = father ×
普通方法需要对象调用静态方法可以直接调用,不能有实例
3,运算符重载的基本原则使用operator关键字:运算符重载使用operator关键字定义。静态方法:重载运算符的方法必须是static。参数和返回类型:运算符重载的方法的参数类型和返回类型通常为定 ...
特性**[Obsolete("这个方法弃用了")]**:
标记已过时的代码,警告开发者该代码不应再使用。
**[DebuggerStepThrough]**:
指示调试器在此方法中跳过步骤调试。
调用者信息特性:
[CallerFilePath]
获取调用者的源文件路径。
[CallerLineNumber]
获取调用者的源文件行号。
[CallerMemberName]
获取调用者的方法名或属性名。
这些特性只能应用于方法参数上,并且它们的值是由编译器在编译时自动插入的。
1234567891011// 记录日志的方法,带有调用者信息特性 public void Log(string message, [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0, [CallerMemberName] strin ...
简述装箱拆箱
1装箱是指将值类型(int,float等)转换为对象类型object类型的过程,拆箱是将对象类型转换为原始类型的过程,装箱操可以通过赋值操作自动实现,拆箱操作要强制类型转换,如果转换类型和原类型不匹配会抛出类型转异常。
class 和 struct
1234567结构是值类型,而类是引用类型。向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。与类不同,结构的实例化可以不使用 new 运算符。结构可以声明构造函数,但它们必须带参数。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。结构可以实现接口。在结构中只能用构造函数来实例化属性,不能声明的时候直接赋值
类的分类
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647481.1 抽象类关键字: abstract使用目的:若所有子类拥有共同的特性,可以把这个特性放到一个抽象类中,子类继承 ...
例题输入n个数找出最小值,与第一个值进行交换,然后输出这些数123456789101112131415161718192021222324252627//输入n个数找出最小值,与第一个值进行交换,然后输出这些数string str = Console.ReadLine();//输入string[] strArray = str.Split(" ");//转换成字符串数组int[] intArray = new int[strArray.Length];//声明一个int数组for (int i = 0; i < strArray.Length; i++){ intArray[i] = Convert.ToInt32(strArray[i]);//把字符串数组内容转移到int数组}//找出最小值int min = intArray[0];int minIndex = 0;//最小值索引for (int i = 1; i < intArray.Length; i++){ if (intArray[i] < mi ...
接口和抽象类1. 定义和用途
接口(Interface):
定义:接口是一个只能包含方法签名、属性、事件和索引器的类型声明。接口不能包含字段(除非是静态字段),也不能有实现。
用途:接口用于定义类的公共合同。实现了某个接口的类必须提供该接口中定义的所有方法的实现。
抽象类(Abstract Class):
定义:抽象类是一个不能被实例化的类,可以包含方法实现、字段、属性、构造函数等。它可以包含完全实现的方法(非抽象方法)以及抽象方法(没有实现的方法)。
用途:抽象类用于提供一个基本的实现和共享的功能,这些功能可以被派生类继承和重用。抽象类用于建立一个共同的基类,为多个派生类提供基础功能。
2. 继承和实现
接口:
实现:一个类可以实现多个接口(多重继承)。接口的实现是通过 : 符号进行的,例如:class MyClass : IMyInterface { ... }。有两种方式:1,隐式实现,2显示实现
1234567891011121314151617181920212223// 定义接口public interface IExample{ ...
结构和类在 C# 中,struct(结构)是一种值类型的数据结构,它有一些特定的特点和使用场景。以下是 C# 结构的主要特点:
1. 值类型
结构是值类型,而不是引用类型。这意味着当你将结构赋值给另一个结构时,会复制结构的所有字段的值,而不是复制引用。
结构的实例存储在栈上(在方法内)或在内存中的数据区域中(作为类的字段时)。
2. 内存分配
结构通常比类更节省内存,因为它们存储在栈上(当它们是局部变量时),而不是堆上。
对于小型的数据类型,使用结构可以减少垃圾回收的开销。
3. 无继承
结构不能继承自其他结构或类,也不能作为基类被其他结构或类继承。
结构可以实现接口,但不能继承其他类型。
4. 默认构造函数
结构不能定义显式的无参数构造函数。编译器会提供一个默认的无参数构造函数,初始化所有字段为其默认值(例如,0、false、null)。
5. 字段和方法
结构可以包含字段、属性、方法、事件和构造函数(除了无参数构造函数外)。
结构可以有静态成员,但不能有实例字段和静态字段的混合。
6. 内存布局
结构的字段是按声明的顺序在内存中排列的。它们的内存布局通常比类更紧凑。
7 ...
集合类Array(数组)和ArrayList(集合)关键区别
类型安全:
Array:类型安全,数组中的所有元素必须是相同的类型。
ArrayList:非类型安全,可以包含任何类型的对象。
大小:
Array:大小固定,必须在创建时指定。
ArrayList:大小动态调整,根据需要自动扩展。
性能:
Array:性能较好,直接操作内存。
ArrayList:性能较差,因为它需要处理动态扩展和类型转换。
用途:
Array:适用于需要固定大小和类型安全的场景。
ArrayList:适用于需要动态大小且类型不确定的场景,但推荐使用 List<T> 代替 ArrayList。
ArrayList1. 特性
动态大小:ArrayList 能够自动调整大小。它会在添加元素时动态扩展容量。
非类型安全:ArrayList 可以存储任何类型的对象。这可能会导致类型不安全的问题,因为你需要在取出元素时进行类型转换。
对象存储:ArrayList 存储的是 object 类型的对象,因此你可以存储不同类型的对象,但需要在使用时进行强制类型转换。
它属于 System.Col ...