方法
1.如果对象中的string字段 没有赋值,则为null;
2.方法的重载,(不包含返回类型)意思就是如果写重载方法,返回类型必须一致,如果不一致,则会报错;如下:会编译报错;
class Calculator
{
public int Add(int a,int b){return a + b;}
public double Add(int a,int b){return a + b;}
}
3.方法的重载,包含形式列表,;如下,是正常的
class Calculator
{
public int Add(int a,int b){return a + b;}
public int Add<T>(int a,int b){return a + b;}
}
4.方法的重载,包含引用类型:如下,是正常的
class Calculator
{
public int Add(int a,int b){return a + b;}
public int Add(ref int a,int b){return a + b;}
}
5.方法的调试
逐步,逐过程,上一步,监视堆栈调用,监视值(局部变量) 、需要打断点才能监视堆栈调用以及局部变量
6.default 获取数据类型的默认值;
值类型:int x = default(int); 引用类型:Form form = default(Form);
枚举类型:
enum Level
{
one = 1,
two = 0,
three = 3
}
Level level = default(Level); 会返回为0的值 ,假如没有0 ,访问默认值就会报错了,所以初始化的时候 要存在一个为0的索引
##操作符new的用法
7.数组类型的初始化:以下都是可以的
int[] myArray = new int[] { 1, 3, 4 };
int[] myArray1 = new int[4] {1,2,3,4 };
int[] myArray2 = new int[4];
int[] myArray3 = { 1, 3, 4, 6 };
8.匿名类型
var penson = new { Name = "Mr.Okay", Age = 3 };
9.checked 与 unchecked
checked检查是否越界:
例:uint y = checked(x + 1);
unchecked不会检查是否越界,程序中默认是不检查的
10.sizeof获取结构体类型的大小
例:
int x = sizeof(int);
Console.WriteLine(x);
如果是获取自定义的结构体的大小,就需要放在unsafe中去执行,并设置程序 允许不安全的代码,双保险
unsafe
{
int y = sizeof(Student1);
Console.WriteLine(y);
}
11. ~ 操作符:将数据转化为2进制,然后按位取反;
int x = 1;
int y = ~x;
12.浮点数 包含三种:正无穷大、负无穷大、Nan;
13.强制类型转换:
convent.toInt32 int.parse()
主要差异在于 Convert.ToInt32
更加灵活,它能够处理 null
并转换多种类型到 int
,而 int.Parse
只专注于将数字字符串转换为 int
类型。
14.doulbe 除数 是可以为0的,正数除以0,为正无穷大,负数除以0,为负无穷大,
15.位移操作符:
正数 ,左移就是整体向左移,数字乘以2,补0,右移 也补0
负数 ,左位移是补0;右位移补1
16. IS AS用法,这两者有时可以通用;
object o = new Teacher();
if(o is Teacher)
{}
Teacher t = o as Teacher;
if (t != null)
{}
17. ^ 异或运算符 不同则为1 相同则为0
18. && 和 || 具有短路效应,如果一边满足条件了,就不会执行右边的了
19.??null值合并操作符
int? x = null; 设置x为可null类型
int z = x ?? 3; 如果x为null,则赋值为默认值3
string y = x?.ToString() ?? "3"; 如果x不为null,这调用tostring方法,如果不为null,则赋值3
20. <<= >>=
int x = 1;
y <<=x
解释:相当于 y = y<<x;
21. &=
是一个复合赋值运算符,它结合了按位与操作 (&
) 和赋值操作 (=
)。当你使用 &=
操作符时,左边变量的值会与右边表达式的值进行按位与操作,然后结果会被赋回给左边的变量。