做时间的朋友😭
随便记记01

override 与重载(overload)的区别

1.重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。重载(overload)是面向过程的概念。
2.Override 是进行基类中函数的重写。Override 是面向对象的概念

C#中值类型与引用类型

1.值类型:struct、enum、int、float、char、bool、decimal 引用类型:class、delegate、interface、array、object、string

C#中类(class)与结构(struct)的异同

1.class 可以被实例化,属于引用类型, class 可以实现接口和单继承其他类,还可以作为基类型,是分配在内存的堆上的 struct 属于值类型,不能作为基类型,但是可以实现接口,是分配在内存的栈上的.

C#中参数传递 ref 与 out 的区别

1.ref 指定的参数在函数调用时必须先初始化,而 out 不用
2.out 指定的参数在进入函数时会清空自己,因此必须在函数内部进行初始化赋值操作,而 ref 不用 总结:ref 可以把值传到方法里,也可以把值传到方法外;out 只可以把值传到方法外 注意:string 作为特殊的引用类型,其操作是与值类型看齐的,若要将方法内对形参赋值后的结果传递出来,需要加上 ref 或 out 关键字。

C# 中 static 关键字的作用

对类有意义的字段和方法使用 static 关键字修饰,称为静态成员,通过类名加访问操作符“.”进行访问; 对类的实例有意义的字段和方法不加 static 关键字,称为非静态成员或实例成员。 注: 静态字段在内存中只有一个拷贝,非静态字段则是在每个实例对象中拥有一个拷贝。而方法无论是否为静态,在内存中只会有一份拷贝,区别只是通过类名来访问还是通过实例名来访问。

字符串中 string str=null 和 string str=””和 string str=string.Empty 的区别

string.Empty 相当于“”,Empty 是一个静态只读的字段。 string str=”” ,初始化对象,并分配一个空字符串的内存空间 string str=null,初始化对象,不会分配内存空间

const 和 readonly 的区别

都可以标识一个常量。主要有以下区别: 1、初始化位置不同。const 必须在声明的同时赋值;readonly 即可以在声明处赋值; 2、修饰对象不同。const 即可以修饰类的字段,也可以修饰局部变量;readonly 只能修饰类的字段 3、const 是编译时常量,在编译时确定该值;readonly 是运行时常量,在运行时确定该值。 4、const 默认是静态的;而 readonly 如果设置成静态需要显示声明 5、修饰引用类型时不同,const 只能修饰 string 或值为 null 的其他引用类型;readonly 可以是任何类型。

i++和++i 的区别

1.i++是先赋值,然后再自增;++i 是先自增,后赋值。 2.i=0,i++=0,++i=1; Console.WriteLine(++i==i++); 结果位 true

C#成员修饰符

abstract:指示该方法或属性没有实现。

const:指定域或局部变量的值不能被改动。

event:声明一个事件。

extern:指示方法在外部实现。

override:对由基类继承成员的新实现。

readonly:指示一个域只能在声明时以及相同类的内部被赋值。

static:指示一个成员属于类型本身,而不是属于特定的对象。

virtual:指示一个方法或存取器的实现可以在继承类中被覆盖。

ADO.NET 常用对象

Connection:主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。Close 和 Dispose 的区别,Close 以后还可以 Open,Dispose 以后则不能再用。

Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及调用存在数据库中的存储过程等。这个对象是架构在 Connection 对象上,也就是 Command: 对象是通过在 Connection 对象连接到数据源。

DataAdapter:主要是在数据源以及 DataSet 之间执行数据传输的工作,它可以透过 Command 对象下达命令后,并将取得的数据放入 DataSet 对象中。这个对象是架构在 Command 对象上,并提供了许多配合 DataSet 使用的功能。

DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet 是放在内存中的。DataSet 的能力不只是可以储存多个 Table 而已,还可以透过 DataAdapter 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是http://ADO.NET 中重量级的对象,这个对象架构在 DataAdapter 对象上,本身不具备和数据源沟通的能力;也就是说我们是将 DataAdapter 对象当做 DataSet 对象以及数据源间传输数据的桥梁。DataSet 包含若干 DataTable、DataTableTable 包含若干 DataRow。

DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用 DataReader 对象。DataReader 对象只是一次一次向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。因为 DataReader 在读取数据的时候限制了每次只读取一条,而且只能只读,所以使用起来不但节省资源而且效率很好。使用 DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。

数字格式化转换

可使用“0”和“#”占位符进行补位。“0” 表示位数不够位数就补充“0”,小数部分如果位数多了则会四舍五入;“#”表示占位,用于辅助“0”进行补位。如下例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// “0”描述:占位符,如果可能,填充位
Console.WriteLine(string.Format("{0:000000}", 1234)); // 结果:001234
// “#”描述:占位符,如果可能,填充位
Console.WriteLine(string.Format("{0:######}", 1234)); // 结果:1234
Console.WriteLine(string.Format("{0:#0####}", 1234)); // 结果:01234
Console.WriteLine(string.Format("{0:0#0####}", 1234)); // 结果:0001234
// "."描述:小数点
Console.WriteLine(string.Format("{0:000.000}", 1234)); // 结果:1234.000
Console.WriteLine(string.Format("{0:000.000}", 4321.12543)); // 结果:4321.125

// ","描述:千分表示
Console.WriteLine(string.Format("{0:0,0}", 1234567)); //结果:1,234,567

// "%"描述:格式化为百分数
Console.WriteLine(string.Format("{0:0%}", 1234)); // 结果:123400%
Console.WriteLine(string.Format("{0:#%}", 1234.125)); // 结果:123413%
Console.WriteLine(string.Format("{0:0.00%}", 1234)); // 结果:123400.00%
Console.WriteLine(string.Format("{0:#.00%}", 1234.125)); // 结果:123412.50%
内置快捷字母格式化用法

// E-科学计数法表示
Console.WriteLine((25000).ToString("E")); // 结果:2.500000E+004
// C-货币表示,带有逗号分隔符,默认小数点后保留两位,四舍五入
Console.WriteLine((2.5).ToString("C")); // 结果:¥2.50

// D[length]-十进制数
Console.WriteLine((25).ToString("D5")); // 结果:00025

// F[precision]-浮点数,保留小数位数(四舍五入)
Console.WriteLine((25).ToString("F2")); // 结果:25.00

// G[digits]-常规,保留指定位数的有效数字,四舍五入
Console.WriteLine((2.52).ToString("G2")); // 结果:2.5

// N-带有逗号分隔符,默认小数点后保留两位,四舍五入
Console.WriteLine((2500000).ToString("N")); // 结果:2,500,000.00

// X-十六进制,非整型将产生格式异常
Console.WriteLine((255).ToString("X")); // 结果
ToString 也可以自定义补零格式化:


Console.WriteLine((15).ToString("000")); // 结果:015
Console.WriteLine((15).ToString("value is 0")); // 结果:value is 15
Console.WriteLine((10.456).ToString("0.00")); // 结果:10.46
Console.WriteLine((10.456).ToString("00")); // 结果:10
Console.WriteLine((10.456).ToString("value is 0.0")); // 结果:value is 10.5

字符串拼接、字符串内插法

将数组中的字符串拼接成一个字符串:

1
2
3
var parts = new[] { "Foo", "Bar", "Fizz", "Buzz"};
var joined = string.Join(", ", parts);
// joined = "Foo, Bar, Fizz, Buzz"

以下四种方式都可以达到相同的字符串拼接的目的:

1
2
3
4
5
6
string first = "Hello";
stringsecond = "World";
string foo = first + " " + second;
string foo = string.Concat(first, " ", second);
string foo = string.Format("{0} {1}", firstname, lastname);
string foo = $"{firstname} {lastname}";

字符串内插法简单用法:

1
2
3
var name = "World";
var str =$"Hello, {name}!";
// str = "Hello, World!"

带日期格式化

1
2
var date = DateTime.Now;
var str = $"Today is {date:yyyy-MM-dd}!";

补齐格式化(Padding):

1
2
3
4
5
6
7
var number = 42;
// 向左补齐
var str = $"The answer to life, the universe and everything is {number,5}.";
// str = "The answer to life, the universe and everything is ___42." ('_'表示空格)
// 向右补齐
var str = $"The answer to life, the universe and everything is ${number,-5}.";
// str = "The answer to life, the universe and everything is 42___."

结合内置快捷字母格式化:

1
2
3
4
5
6
var amount = 2.5;
var str = $"It costs {amount:C}";
// str = "¥2.50"
var number = 42;
var str = $"The answer to life, the universe and everything is {number,5:f1}.";
// str = "The answer to life, the universe and everything is ___42.1"
C#
随便记记02
C# Path.Combine方法代码示例
© 2022 Sk8erBoi
Powered by hexo | Theme is blank
Title - Artist
0:00