【namespace】
命名空间
。net有众多类,全放一起,无法快速检索到需要的类。
所以用【点】来区分,注意【点】不是包含关系。
解决类重名问题时,要用完全限定名来区分。【完整命名空间路径】
配合引用:
【字段】
类内部的全局变量。外界不能直接访问读写。
字段加public后,这种设计不合理,而且控件也不能正确显示。
【static】作用是所有派生的子对象,都使用同一个变量值。
【属性】
只作为与外界数据交换。间接地访问到字段。
通常对接收的数据做范围限制。只读,只写,只能某一段范围值。
也可以做日志刷新等动作。
【方法】
在C#里称:方法
在C语言里称:函数方法 实际它们是同一个东西,只是称呼不同。
在C#里【指针函数】的替代品是【委托】
【委托】:原因:主窗体内可以调用子窗体的方法,子窗体不能直接调用主窗体的方法。
1:在他们2个类的公共区定义【委托类型】一般在子窗体内定义,因为主窗体可以直接访问子窗体。
2:主窗体绑定委托【将主窗体的方法绑定到委托】相当于制作快捷键。
3:子窗体调用委托【相当于调用快捷键,快捷键会执行指向主窗体的方法】
委托绑定用【+=】【-=】和【=null;】
可以先 =null;然后再 +=绑定方法
【构造方法】
C#会自动提供默认构造方法。
在new的时候,生成无参的构造方法。【相当于种豆得豆】
当自己写了【有参构造方法】,那默认构造方法就会消失,需要手动添加。
【有参构造方法】相当于定制汽车的配置。内饰颜色,轮毂大小等。
;
【析构函数】
~类型名()
{
日志;
}
【架构】
小型项目用3层架构: 老板》领导》员工
原材料是【老板,领导,员工】的公共区域。
宏观上看:输入跟输出,不用关心内部到底是怎样处理数据的。
老板: new出原材料,传给领导。
领导:按照老板的意愿,调用不同的员工对【原材料】加工。
员工:输入原材料,再输出原材料。
整个过程中:原材料都可能被他们new,赋值,丢弃。
【中大型框架】
【值】
用bit长度来存储数据,并且可能带符号。
同样的8bit数据,如果带符号,最高位是【正负符号bit】后7bit才是数值。
u8 byte 0~255
u16 ushort 0~65535 unsigned short
u32 uint 0~42 9496 7295
u64 ulong 0~1844 6744 0737 0955 1615
i8 sbyte -128~127
i16 short -32768~32767
i32 int -2147483648~2147483647
i64 long -9223372036854775808~9223372036854775807
i128
float 32bit小数 // 3.1415926f // -7.654f
double 64bit小数 // 3.14159d //可以不加d -98.7654
decimal 128bit小数 -98.76m 3.14m
【注】int的bit长度受CPU位数限制。Int64 e= unchecked((Int64)(0x8000000000000000));
int Bytelen = sizeof(decimal); // 16 byte【总长16字节】
【引用类型】:类,数组, //整体赋值后会导致修改B后,A的值也会改变。
【值类型】:结构体,byte等
【赋值】
方向:从右到左
好的写法能方便数据分析和设备调试。
int num = 0b00001111; //二进制写法 0b开头
num = 0b111 << 5; // 1110 0000
num = 1 << 7; // 1000 0000
// 常规用法
decimal pai = 3.14159f;
pai = 12345m;
pai = 255;
pai = 0xff; // 十六进制
pai = 0B00001111; //0x0f
textBox3.Text += "你好!" + '\u000d' + '\u000a'; // 0x0000 到 0xFFFF;
string txbuffer2 = "要发送的数据。";
tx=Encoding.ASCII.GetBytes(txbuffer2);
rx=Encoding.ASCII.GetString(tx);// 解码
Encoding.UTF8.GetBytes
Encoding.UTF8.GetString
Encoding.BigEndianUnicode.GetBytes
Encoding.BigEndianUnicode.GetString
Encoding.UTF7.GetBytes
Encoding.UTF7.GetString
【其他类型】
object 盒子类型 //数据是二进制保存的,相当于截取二进制长度
dynamic 动态类型,运行的时候确定; dynamic d = 20;
char* 指针类型 char* cptr; int* iptr;
bool 1bit false,true//假,真 逻辑关系
char 16bit 相当于照片的编号,输入索引值,显示出对应文字/符号的照片 '\u0000'到'\uFFFF'
string 字符串类型,是连续的char的倍数长度,一般用于输出连续文字和符号
char[] 转string需要用 new string(char数组);
StringBuilder 可变字符串:StringBuilder 坤=new StringBuilder("坤",49);// 最大49字
DateTime 时间类型 string ATtime = DateTime.Now.ToString("ss's'ffff:");// xx秒xxxx毫秒
class 对象类型(参数引用类型传递)
struct 对象结构体类型(参数值类型传递)
enum 枚举类型(有明确范围个数的,比如星期)
union 共用体(最大类型容器)
byte[,] 数组类型(引用类型)new byte[8, 13];
sizeof() 获取数据类型的字节大小 byte num = sizeof(int);
typeof() 返回class类型
nameof() 输出变量的名字。
& 取变量的地址 函数方法前需要 unsafe修饰,然后工程要开启不安全代码。
* 指针,指向地址,返回对象
?: 条件表达式
is 判断是否为某一类型
as 强制转换【不会抛出异常】 Object obj = new string("维修电工!");
string str = obj as string;
C# 摒弃了指针写法,用ref和out代替指针,函数指针用委托代替。
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/cfqq1989/article/details/127291730
【数组】
static byte[,] buffer = new byte[8, 13];
【个】【层】【横】【纵】
【List】
泛型:第3方管家,来管理同类型的集合。
ArrayList 对【类型】集合的处理,遍历.Count,添加Add,删除Remove,插入Insert
Hashtable 【字典】添加Add,删除Remove,键Key,值Value,
用于上位机与下位机string文本,调用方法。
查找包含Contains,
查找键ContainsKey
查找值ContainsValue
this 子对象
public void setName(String name)
{
this.name = name;
}
<T> 泛型,占位符,相当于管家// 在集合内找出实例对象
定义
public GetType<T> (T t)
{
Console.WriteLine(t.GetType());
}
上层
p.GetType<int>(123);
【文本】
char
;单引号表示字符【‘A’】
转义【‘\‘’】\r回车 \n换行 \t制表符 \f换页 \"双引号 \\反斜杠
\b退格 \'单引号 '\uFF15' 十六进制的单字符
string
;【“用双引号表示”】
判断相同 Compare -1 0 1
bool相等 Equals
格式化显示 Format c货币,d负十进制,e指数,f小数,n小数,p百分比,x十六进制
DateTime.Now.Millisecond F
截取 Substring
分块 Split
插入 Insert
删除 Remove
复制 Copy
替换 Replace(旧,新)
StringBuilder 减少内存开销
追加 Append
格式追加 AppendFormat
插入 Insert
删除 Remove
替换 Replace
【封装继承多态】
封装:对象解释为【属性】【方法】,在C#里指【类class】
继承:重复性的代码用继承。先写个发动机,再继承给轿车,SUV等
多态:父类只有方法名,没有方法体。子类有方法体。将不同的子类裁剪给父亲,
这样,父亲使用同一个方法名,能实现子类的特征。【常用 抽象,接口,虚方法】
public virtual void 方法A()
public override void 方法A()
abstract interface
【GDI】
画画
Graphics 画画师;
Pen 画笔 = new Pen(Color.Black,3);
Point point1 = new Point(10,50);
Point point2 = new Point(100,50);
;
画画师.DeawLine(画笔 , point1 , point2 ); // 直线
矩形 DraRectangle
椭圆 DrawEllipse
圆弧 DrawArc
扇形 DrawPie
多边形 DrawPolygon
【文本】 DrawString 文本,字体,颜色,位置
【图像】 DrawImage
柱形 FillRectangle
【折线】 FillEllipse
饼形 FillPie
【路径】
绝对路径
;
;
相对路径
;
;
【特性】
STA Thread
[STAThread]
【线程】
Thread
启动 Start();
暂停 Suspend();
继续 Resume();
休眠 Sleep(毫秒);
结束 Abort();