重工电子论坛

标题: 学习c# --笔记 [打印本页]

作者: 李钢-15级    时间: 2016-5-12 08:33
标题: 学习c# --笔记
本帖最后由 李钢-15级 于 2016-5-12 08:38 编辑

学习必更新。欢迎大家一起讨论。(参考视频,传智播客赵剑宇视频)
作者: 李钢-15级    时间: 2016-5-12 09:06
1,.NET两种交互模式:c/S(winform应用程序,桌面应用程序如qq)  B/S(asp.net应用程序就是网站,如京东)
2,c#编程常用快捷键
Ctrl+K+D:快速对齐代码
Ctrl+Z:撤销
Ctrl+S:保存(一定要经常保存!)
Ctrl+J:快速弹出智能提示
Shift+End 、Shift+Home光标到首部或者光标到尾部
Ctrl+K+C:注释所选代码
Ctrl+K+U:取消对所选代码的注释
F1:转到帮助文档
折叠冗余代码:#Region 和#EndRegion
3,命名规范
    不能以数字开头。成分可以是字母”、数字、下划线
Camel 命名法:
首个单词的首字母小写,其余单词的首字母大写(变量名)
Pascal命名命名规范:每一个单词第一字母都大写
如果使用到英文单词的缩写,全部用大写!(类名)
+号的作用
1)、连接:当+号两边有一边是字符串的时候,+号就起到连接的作用。
2)、相加:两边是数字的时候
10、占位符
使用方法:先挖个坑,再填个坑。
    如:     string name  = "ZHANG SAN";
        Console.WriteLine("你好{0}",name);
使用占位符需要注意的地方:
1、你挖了几个坑,就应该填几个坑,如果你多填了,没效果。
                                 如果你少填了,抛异常。
2、输出顺序:按照挖坑的顺序输出。



   
作者: 李钢-15级    时间: 2016-5-12 09:24
一个应用(控制台程序)

   Console.WriteLine("你好,你叫什么");//显示的值
     string name= Console.ReadLine();//存储用户输入的值
     Console.WriteLine("我叫{0}", name);
     Console.ReadKey();

作者: 李钢-15级    时间: 2016-5-12 10:00
c#中的转义符
如/n,换行
/"/半角双引号
/t空格
/b 删除前面的
/r/n windows系统下的换行符
@取消转义作用,如表示路径的时候可以用,也可以保留原格式输出

作者: 李钢-15级    时间: 2016-5-12 11:59
类型转换:与c相识的,如int 到double,还有一种是convert转换工厂(不同的类型之间的转换,如字符串到int型,或者int型到日期型,但要求面上要看的过去,你不能把字符串ABC,转化成int型)
    如         string a = "123";
             int b = Convert.ToInt16(a);
             Console.WriteLine("我叫{0}", b);
此时 b为int型 123


bool类型:true或false(逻辑运算表达式的结果是bool类型)
作者: 李维强-15级    时间: 2016-5-13 16:30
速度看完 加快进度
作者: 李钢-15级    时间: 2016-5-15 17:49
本帖最后由 李钢-15级 于 2016-5-15 22:30 编辑

枚举类型。
枚举类型和int类型可以相互转换,枚举里面的值默认是从0开始。
任何类型都可以利用.tostring语句转换成字符串类型。
同样也可以用Enum.parse 将字符串转换成枚举类型(用到时再查)。
数组的定义
int[] (数组的长度) a =new int[10];  a[2]=3;
可以l利用 a.length调用数组的长度。



作者: 李钢-15级    时间: 2016-5-15 19:09
本帖最后由 李钢-15级 于 2016-5-15 20:31 编辑

类,方法
c#中没有全局变量的说法,但可以用这种方式来模拟
public static  int a=1;(在类的下面声明)
在调用方法的时候,类名可以s省去(当调用的方法与main函数在一个类里面的时候)

计算是否闰年的小程序
///(注释,在引用方法时能够带来便利。f5 执行函数,f10单步 f11 进入函数)

hellow word.rar

39.51 KB, 下载次数: 1


作者: 李钢-15级    时间: 2016-5-15 21:12
本帖最后由 李钢-15级 于 2016-5-15 22:25 编辑

异常捕获(哪一行可能出现异常,则try一下)
try(处理正常情况,出错行后面的代码不执行)
catch(处理异常情况)。
方法的功能一定要单一,忌讳出现“提示输入‘(这一种是控制台的才合适)
(程序功能是,判断输入数据是否是数字,是就输出,否就报错)

inputnumber.rar

75 Bytes, 下载次数: 0


作者: 李钢-15级    时间: 2016-5-16 00:43
本帖最后由 李钢-15级 于 2016-5-16 12:27 编辑

out参数
返回多个不同类型的值时,也可以是同一个类型,用out参数。out参数必须在方法中赋值。(注意,return语句放在最后,因为到return语句就不在执行。)
注意out参数的应用。   out 不能省去。
下面程序是判断用户名与密码是否正确。

panduanyonghu1.rar

21.2 KB, 下载次数: 0


作者: 李钢-15级    时间: 2016-5-16 13:05
ref参数的应用,能够将一个变量带入一个方法中应用,值也跟着改变(和指针类似),要求在调用方法前赋值,引用时也需要加refi
下面程序 交换两个数的值。

jiaohuan1.rar

19.95 KB, 下载次数: 0


作者: 李钢-15级    时间: 2016-5-16 14:21
params 可变参数。
在数组中常被用,而且应用时,要将这个参数放到最后一个。一个参数列表中只能有一个可变参数。
如下:public static void sum(int a,params int[] score);
        调用 sum(a ,1,13,44,55)
作者: 李钢-15级    时间: 2016-5-16 14:41
方法重载
要求:函数名相同,但是参数不同
参数不同,个数不同,或者类型不同。重载与返回值无关。

作者: 李钢-15级    时间: 2016-5-16 15:27
本帖最后由 李钢-15级 于 2016-5-16 15:29 编辑

方法的递归
也要跳出递归。下面程序是多次调用。输出risk

2~KG`N)HOZ(EB9)UTG4G)0Q.png (6.91 KB, 下载次数: 1667)

2~KG`N)HOZ(EB9)UTG4G)0Q.png

tellstory.rar

19.88 KB, 下载次数: 0


作者: 李钢-15级    时间: 2016-5-16 16:23
恩恩
作者: 李钢-15级    时间: 2016-5-18 00:24
本帖最后由 李钢-15级 于 2016-5-18 15:32 编辑

面向对象
找出通用代码,屏蔽差异。
找对象
类是具有相同(属性和方法)的对象集合
public class 类名
{
    字段
   属性
   方法
}
写好类后(add-class),创建对象(在主函数内创建,给字段赋值,调用方法)的过程中叫做实例化,利用new。类不占内存,对象的字段占占内存。

G~0)C`%SV[CA8HC99IPS.png (28.82 KB, 下载次数: 1675)

G~0)C`%SV[CA8HC99IPS.png

TF)V$A~4~_4D7N6GN2K]SDB.png (53.35 KB, 下载次数: 1680)

TF)V$A~4~_4D7N6GN2K]SDB.png

作者: 李钢-15级    时间: 2016-5-18 19:09
本帖最后由 李钢-15级 于 2016-5-18 20:46 编辑

属性
作用是保护字段(字段必须是私有的,而属性一般是公开的)、对字段的赋值与取值作一个限定。
set
get
所以赋值最好是给属性赋值就好。引用也是一样

C{CA`MBB~3K1HDJG_A@2XB0.png (32.36 KB, 下载次数: 1701)

C{CA`MBB~3K1HDJG_A@2XB0.png

Y54Y(G9EO5DW{699A]{DMJS.png (15.62 KB, 下载次数: 1661)

Y54Y(G9EO5DW{699A]{DMJS.png

lei1.rar

23.32 KB, 下载次数: 0


作者: 李钢-15级    时间: 2016-5-18 20:50
本帖最后由 李钢-15级 于 2016-5-19 01:44 编辑

静态与非静态(默认)的差别
1在非静态类中,既可以有实例成员(非静态的),也可以有静态的
2在调用实例成员时。对象名.成员名(属性,方法,字段)
  在调用静态成员时,只能是类名.成员名
3静态方法中不能访问,非静态成员
4非静态方法中都可以使用


5静态类中只能有静态的成员
6静态类不用实例化对象。
7经常使用的方法构成的类,叫做“工具类”,通常用作静态类
8静态类越少越好,程序结束后才释放资源

TMB5GF{K`GCO8R97{0TL]DX.png (18.18 KB, 下载次数: 1673)

TMB5GF{K`GCO8R97{0TL]DX.png

作者: 李钢-15级    时间: 2016-5-18 22:45
本帖最后由 李钢-15级 于 2016-5-19 08:45 编辑

构造函数(初始化函数,初始化属性)
1没有返回值,void也不能写
2名称必须类名一样
创建对象的时候,先执行构造函数
构造函数可以有重载(函数名一样,参数不一样)

关键字new
1,在内存中开辟空间
2创建对象
3用构造函数初始化。      下图当中name是读写属性。应该这样赋值 this .Name=name.

GK53QMFCQ$I$Z1P%TGXQMMS.png (23.65 KB, 下载次数: 1664)

GK53QMFCQ$I$Z1P%TGXQMMS.png

作者: 李钢-15级    时间: 2016-5-18 23:08
本帖最后由 李钢-15级 于 2016-5-19 01:35 编辑

this
1代表当前类的对象
2在类中调用 构造函数,用法如下图


$]_R)9JPOBP@`A159OOAG4G.png (26.46 KB, 下载次数: 1681)

$]_R)9JPOBP@`A159OOAG4G.png

A3}1`}VZC4%ZBX2WUQ@G]KA.png (14.75 KB, 下载次数: 1658)

A3}1`}VZC4%ZBX2WUQ@G]KA.png

作者: 李钢-15级    时间: 2016-5-18 23:09
本帖最后由 李钢-15级 于 2016-5-18 23:11 编辑

析够函数
程序结束的时候才用,释放空间
作者: 李钢-15级    时间: 2016-5-19 00:18
本帖最后由 李钢-15级 于 2016-5-19 01:30 编辑

set get的用法
set get 是属性当中的方法,分别表示。只写,只读。都有则是2种属性都有,否者只是其一。
如果是读写则可以利用对象来赋值如 lili.age=10,若是只读,那么该如何赋值呢?可以在构造函数里面利用this._age=10赋值。

9GSM1)P%@9WHF2`(I_$5B)T.png (7.9 KB, 下载次数: 1615)

9GSM1)P%@9WHF2`(I_$5B)T.png

68794$W4}`81{VONB23E){K.png (12.73 KB, 下载次数: 1652)

68794$W4}`81{VONB23E){K.png

TN0%BY7UXA[VQYKTQD0%J{X.png (13.09 KB, 下载次数: 1644)

TN0%BY7UXA[VQYKTQD0%J{X.png

作者: 李钢-15级    时间: 2016-5-19 01:45
本帖最后由 李钢-15级 于 2016-5-19 01:46 编辑

关于类的综合的代码

Ticket1.rar

23.33 KB, 下载次数: 0


作者: 李钢-15级    时间: 2016-5-19 09:14
本帖最后由 李钢-15级 于 2016-5-19 10:00 编辑

[attach]350[/attach]命名空间(区分同名的类)
是不同类的集合,如果当前项目下没有某一类,并且也没有该类的命名空间则会报错,需要手动导入命名空间
1鼠标点,左下角
2 alt +shift+f10.

跨项目使用类时
1需要应用
2引用命名空间

B]VWQD3P$ZK0PED3D3FN.png (122.34 KB, 下载次数: 1668)

B]VWQD3P$ZK0PED3D3FN.png

6_JU}@{YLFD4[(9O[991T(M.png (133.34 KB, 下载次数: 1627)

6_JU}@{YLFD4[(9O[991T(M.png

Ticket1.rar

47.59 KB, 下载次数: 0


作者: 李钢-15级    时间: 2016-5-19 11:05
本帖最后由 李钢-15级 于 2016-5-19 11:21 编辑

值类型和引用类型
值存在栈上
引用类型在堆上(string 数组 自定义的类型),但是他们的地址存在栈中。

字符串的不可变性
当字符串重新赋值时,堆会给字符串重新开辟一块地址,同时栈中的地址也会相应改变,原来的内存将会被gc释放。
作者: 李钢-15级    时间: 2016-5-22 09:08
string 类型可以看作是 char 类型的数组(只读的),可以将string 转换成char 数组。然后再将 new string()转换成字符串
如  s=“abbdbdbssg”  char[]  chs= s.tochararry(),  chs[0]='c',s=new string(chs)
作者: 李维强-15级    时间: 2016-5-22 23:22
要变成 BIG GOD了
作者: 李钢-15级    时间: 2016-5-23 09:22
李维强-15级 发表于 2016-5-22 23:22
要变成 BIG GOD了

强哥带我飞向big god
作者: 李钢-15级    时间: 2016-5-23 09:28
本帖最后由 李钢-15级 于 2016-5-23 13:07 编辑

继承
把几个类的共同的成员,组成一个类,称为父类。子类继承属性和方法,没有继承私有字段
public class student :person(父类)
继承单根性(一个类只有一个父类)
传递性()
子类没有继承父类的构造函数,但是在创建对象的过程中,先调用父类的构造函数,后执行子类构造函数。
子类的构造函数:base(。。)  如  public  student (string name int age int score):base(name age)(在子类中)
在父类中  public person(string name int age)
new 隐藏从父类那里继承过来的成员(当父类与子类的成员一样时)
作者: 李钢-15级    时间: 2016-5-23 13:12
字符相关操作
作者: 李钢-15级    时间: 2016-5-23 13:43
、字符串提供的各种方法(用到的时候再看)
1)、Length:获得当前字符串中字符的个数
2)、ToUpper():将字符转换成大写形式
3)、ToLower():将字符串转换成小写形式
4)、Equals(lessonTwo,StringComparison.OrdinalIgnoreCase):比较两个字符串,可以忽略大小写
5)、Split():分割字符串,返回字符串类型的数组。
6)、Substring():解决字符串。在截取的时候包含要截取的那个位置。
7)、IndexOf():判断某个字符串在字符串中第一次出现的位置,如果没有返回-1、值类型和引用类型在内存上存储的地方不一样。
8)、LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1
9)、StartsWith():判断以....开始
10)、EndsWith():判断以...结束
11)、Replace():将字符串中某个字符串替换成一个新的字符串
12)、Contains():判断某个字符串是否包含指定的字符串
13)、Trim():去掉字符串中前后的空格
14)、TrimEnd():去掉字符串中结尾的空格
15)、TrimStart():去掉字符串中前面的空格
16)、string.IsNullOrEmpty():判断一个字符串是否为空或者为null
17)、string.Join():将数组按照指定的字符串连接,返回一个字符串。

作者: 李钢-15级    时间: 2016-5-24 19:53
本帖最后由 李钢-15级 于 2016-5-29 17:02 编辑

public class person
{

}
new public class  student:person
{
}



里氏转换
1子类可以赋值给父类                                                                person a= new student()
2如果父类装的是子类对象,那么则可以将父类强制转换成之类。student  b=(student)a
子类可以调用父类的成员,而父类则不行

is as

if (a is student)(强转student类,是则是true,否则就是false)
{
}

teacher t = p as student(将student类转换成teacher类 成功则转换成功,否则为空)
作者: 李钢-15级    时间: 2016-5-24 21:14
本帖最后由 李钢-15级 于 2016-5-29 17:03 编辑

protected 访问修饰符
只能在当前类和子类中才能访问
作者: 李钢-15级    时间: 2016-5-24 21:19
本帖最后由 李钢-15级 于 2016-5-29 17:07 编辑

arraylist  集合(长度可变。类型随便)
一些相关方法,以及用法

arrylist   list =new  arrylist ()(创建)
list.add()
list.addrange()
(remove 。。。等等方法,用到时再说)
作者: 李钢-15级    时间: 2016-5-29 12:08
本帖最后由 李钢-15级 于 2016-5-29 14:13 编辑

哈希表(键值对集合--查字典)
根据键去找值。
键唯一,值可以重复
键值对象[键]=值;(添加值) 也可以 对象.add(键 值)



foreach(var item  in ht.keys)


ht.containskey()是否包含

作者: 李钢-15级    时间: 2016-5-29 14:13
本帖最后由 李钢-15级 于 2016-5-29 18:32 编辑

string a =path.GetFileName(str);(str 是一个路径)


path 还有其他功能,包含扩展名,文件名。。。等有关文件路径的操作
file.(路径+名 类型)    包括等剪切 创建 复制 删除

file(对文本文件的操作)
例  读
(以字节数组存)byte[]  buffer =file.readallbytes(@“C:\Users\Administrator\Desktop\wl.txt”)   //buffer 里面存的是一些没有解码的数据,看不懂,需要解码  还有.readalllines  .readalltexts 但是只能是在文本文件中用,而.readallbytes还能用在多媒体文件中。
string ss = endcoding.default(默认,这里是编码格式).getstring(buffer)//解码成功
例 写
string s= “今天天气天气好”
buffer [] = endcoding.default.getstring(s)
file.writeallbytes(@“C:\Users\Administrator\Desktop\wl.txt”)//将字符串写入到.txt文档   还有.writealllines  .writealltexts 但是只能是在文本文件中用,而.writeallbytes还能用在多媒体文件中。
file.appendalltexts()  追加

绝对路径和相对路径(前者是直接能找到的,相对是文件相对于应用程序的文件,与应用程序在同一文件下)
先把文档wl复制到当前程序同一个文件下然后将byte[]  buffer =file.readallbytes(@“C:\Users\Administrator\Desktop\wl.txt”)改为byte[]  buffer =file.readallbytes(“wl.txt”)也可以读出来数据



作者: 李钢-15级    时间: 2016-5-29 18:21
本帖最后由 李钢-15级 于 2016-5-29 18:25 编辑

绝对路径和相对路径(前者是直接能找到的,相对是文件相对于应用程序的文件,与应用程序在同一文件下)
作者: 李钢-15级    时间: 2016-5-29 18:38
本帖最后由 李钢-15级 于 2016-5-29 18:52 编辑

泛性集合
List<int> list =new List<int>(),
list.add(1)
list.addrange(new int {1,2,3})
for(int i =0;int<list.count;i++)
{
conslole.writeline(list)
}

其他方法.

和数组比较 ,长度可变
转换成数组
int[]  a =  list.toarry()
数组转集合
List<int>  list2 =a.tolist
作者: 李钢-15级    时间: 2016-5-29 18:54
本帖最后由 李钢-15级 于 2016-5-29 20:17 编辑

装箱和拆箱
值类型转换成引用类型装箱,相反是拆箱。这需要时间,所以尽量避免使用装箱和拆箱

作者: 李钢-15级    时间: 2016-5-29 20:18
本帖最后由 李钢-15级 于 2016-5-29 20:36 编辑

字典(类型是固定了的hashtable)
directonary<int string> a = new directonary<int string>()
其他和hashtable差不多

foreach(keyvaluepair<int string> kv  in a)
{
console.writeline("{0}..{1}",kv[key],kv[value])

}
作者: 李钢-15级    时间: 2016-5-29 20:38
本帖最后由 李钢-15级 于 2016-5-30 11:20 编辑

filestream 操作字节
例  对多媒体文件进行复制
using (FileStream fsRead = new FileStream(soucre(路径), FileMode.Open, FileAccess.Read))//使用using是实现自动清除内存的功能
            {
                //2、创建一个负责写入的流
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    //因为文件可能会比较大,所以我们在读取的时候 应该通过一个循环去读取
                    while (true)
                    {
                        //返回本次读取实际读取到的字节数
                        int r = fsRead.Read(buffer, 0, buffer.Length);//5m,读取内存的大小
                        //如果返回一个0,也就意味什么都没有读取到,读取完了
                        if (r == 0)
                        {
                            break;
                        }
                        fsWrite.Write(buffer, 0, r);  //写入流的大小
                    }

streamreader  streamwriter(只适用于文本文件)

QMF}U{EUVY_%YZKLWU){PL0.png (47.56 KB, 下载次数: 1654)

QMF}U{EUVY_%YZKLWU){PL0.png

`[OJH}10H}O(V1BYMCJ)QS0.png (27.68 KB, 下载次数: 1609)

`[OJH}10H}O(V1BYMCJ)QS0.png

作者: 李钢-15级    时间: 2016-5-29 22:10
本帖最后由 李钢-15级 于 2016-5-30 12:46 编辑

多态(一个对象多个类型)
一个父类,多个子类都有sayhellow的方法。那么可以利用多态来弄 虚构方法来构建多态

0FDF@BDL8AUIM`]]R3OTRHC.png (24.24 KB, 下载次数: 1634)

0FDF@BDL8AUIM`]]R3OTRHC.png

[Q3EKWI$@6)8B3B[RH4`WHB (2).png (8.09 KB, 下载次数: 1619)

[Q3EKWI$@6)8B3B[RH4`WHB (2).png

DJEJ)T(F0O~[)9KW(}41KU4.png (8.62 KB, 下载次数: 1656)

DJEJ)T(F0O~[)9KW(}41KU4.png

GVJRL3L5J0@CHF~BK60L`C7.png (11.58 KB, 下载次数: 1641)

GVJRL3L5J0@CHF~BK60L`C7.png

作者: 李钢-15级    时间: 2016-5-30 13:18
本帖最后由 李钢-15级 于 2016-5-30 15:24 编辑

抽象类 的方法来实现多态(子类方法不同)
abstract 关键字  没有方法体
public abstract void bark();这个方法没有意义,如果能写的话,则用虚方法来实现
子类的写法和虚方法一样。
但是抽象类不能创建对象。
只能是
animal   A = new cat();
A.bark(此时,调用的是猫里面的方法)


抽象类,里面可以有抽象成员以及非抽象成员
2.抽象成员必须在抽象类中。
3.抽象类不能被实例化

4.子类继承抽象类后,必须把父类中的所有抽象成员都重写。

(除非子类也是一个抽象类,则可以不重写)
5.抽象成员的访问修饰符不能是private
6.在抽象类中可以包含非抽象类成员。
7抽象类是有构造函数的。虽然不能被实例化。
8、如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数。
如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候 也必须要传入返回值。
======
如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。

如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。
作者: 李钢-15级    时间: 2016-5-30 20:21
本帖最后由 李钢-15级 于 2016-5-30 20:37 编辑

c#中的访问修饰符
internal 只能在当前项目中访问
protected  子类才可以用用,可以跨项目
作者: 李钢-15级    时间: 2016-5-30 20:46
本帖最后由 李钢-15级 于 2016-5-31 10:14 编辑

值类型(zhan)和引用类型(堆)
值类型赋值是直接给值,而引用类型是赋的地址。

person p1 = new person()
person p2 = new person()
p1=p2,那么p1 和p2都指向同一对象(p1 p2 存的地址,地址指向堆上的空间)同理,如果把pi 传递到函数当中,值也会改变,就像是传递了地址,这与int类型不一样,但是与ref int一致。ref代表的是传递地址


一个查看变量地址的方法

QQ图片20160531100523.png (163.83 KB, 下载次数: 1611)

QQ图片20160531100523.png

作者: 李钢-15级    时间: 2016-5-30 21:55
本帖最后由 李钢-15级 于 2016-5-31 10:21 编辑

序列化,将对象转换成二进制  传送到对方电脑
[serizeable]

//要将p这个对象 传输给对方电脑
            //Person p = new Person();
            //p.Name = "张三";
            //p.Age = 19;
            //p.Gender = '男';
            //using (FileStream fsWrite = new FileStream(@"C:\Users\SpringRain\Desktop\111.txt", FileMode.OpenOrCreate, FileAccess.Write))//将p这个对象写入这个文件
            //{
            //    //开始序列化对象
            //    BinaryFormatter bf = new BinaryFormatter();
            //    bf.Serialize(fsWrite, p);//写入


反序列化,将二进制转换成对象 将接收到的二进制流转换成对象
             Person p;//建立一个新的类型用于接收,反序列化后的p
            using (FileStream fsRead = new FileStream(@"C:\Users\SpringRain\Desktop\111.txt", FileMode.OpenOrCreate, FileAccess.Read))
            {
                BinaryFormatter bf = new BinaryFormatter();
                p = (Person)bf.Deserialize(fsRead);
            }
            Console.WriteLine(p.Name);
            Console.WriteLine(p.Age);
            Console.WriteLine(p.Gender);
            Console.ReadKey();
        }
    }

作者: 李钢-15级    时间: 2016-5-30 22:43
本帖最后由 李钢-15级 于 2016-5-30 22:57 编辑

部分类
在同一个命名空间下不能用同一个类,但是加上关键字partial  就可以了
私有字段在不同的parital类中可以访问(因为它们本来就属于一个类)


密封类
加关键字 sealed  是不能被继承,但是可以继承别的
作者: 李钢-15级    时间: 2016-5-30 22:57
本帖最后由 李钢-15级 于 2016-5-31 10:40 编辑

复习 tostring (之所以都可以用到,因为包含tostring 的这个类是object的。是父类)
重写tostring(之所以能改因为这个方法是虚方法,为什么不是抽象的,因为子类是不可以调用父类的抽象方法的,一切类都是object的子类)
             int a =2;
            string a1 = a.ToString();//原始的


            Person p = new Person();
            Console.WriteLine(p.ToString());
            Console.WriteLine(a1);
            Console.ReadKey();
        }
    }

    public class Person
    {
        public override string ToString()//重写
        {
            return "Hello World";
        }
    }
}




作者: 李钢-15级    时间: 2016-5-31 10:53
本帖最后由 李钢-15级 于 2016-5-31 14:14 编辑

接口(找不到父类,能力相同时)
interface
   IFlyable fly = new Bird();
            fly.Fly();//birdl类调用接口
            Bird bird = new Bird();
            bird.Fly();//应用bird类当中的fiy
            Console.ReadKey();
        }
public class Bird : IFlyable//接口的申明
    {
        public void Fly()
        {
            Console.WriteLine("鸟飞会");
        }
        /// <summary>
        /// 显示实现接口(因为这里重名了)
        /// </summary>
         void IFlyable.Fly()
        {
            Console.WriteLine("我是接口的飞");
        }

    }

  public interface IFlyable//接口的声明
    {
        void Fly();
    }

作者: 李钢-15级    时间: 2016-6-1 09:00
本帖最后由 李钢-15级 于 2016-6-1 12:42 编辑

开始winform啦

桌面应用程序  后台程序可以右键切换到窗口

_]K27{XM{72P}6]9NJFPT.png (194.03 KB, 下载次数: 1622)

_]K27{XM{72P}6]9NJFPT.png

7(EW@[IE7`CT}}_~Y~E)%MH.png (75.75 KB, 下载次数: 1619)

7(EW@[IE7`CT}}_~Y~E)%MH.png

作者: 李钢-15级    时间: 2016-6-1 20:02
本帖最后由 李钢-15级 于 2016-6-2 17:19 编辑

今天下午弄了一个简单的桌面应用程序.加密记事本的密码和用户名都是 admin     每个控件都是对象(有自己的属性和方法),每个窗口都是类(可以new)  事件类似。时钟

MDI(父窗体)
首先确定一个父窗体。 将IsMdiContainer设置为true。
2、创建子窗体,并且设置他们的父窗体(程序当中.MDparents设置父窗体)。

menuestrip(上边一排的那种菜单)拍列子窗体可以用MDlayout()方发来拍列。

love2.rar

56.91 KB, 下载次数: 0


作者: 李钢-15级    时间: 2016-6-2 14:21
本帖最后由 李钢-15级 于 2016-6-2 14:41 编辑

directory 类  (文件夹 /目录)
directory.create()
             .delete(路径和文件夹名)
            ,move(,)
         .getfiles(路径)得到所选路径下的文件里面的所有文件的路径(可以筛选)。(返回的是字符串类的数组)
       .getdirectory()  得到指定路径下文件的所有文件夹的路径
     .exists(()
作者: 李钢-15级    时间: 2016-6-2 14:43
本帖最后由 李钢-15级 于 2016-6-2 17:25 编辑

浏览器控件(跳转到网页的)
url(在属性里面赋值,当然也可以在程序中赋值) 输入网址即可跳转

不能直接将string赋值给url  ,要使用uri方法


作者: 李钢-15级    时间: 2016-6-2 15:25
本帖最后由 李钢-15级 于 2016-6-2 17:04 编辑

combobox 下拉框
combobox.items.add()
                        .clear()
dropdownstyle属性控制下拉框的风格
                      .selecteditem()(选中的元素)



listbox(酷我播放器 )     picturebox(图片)
得到文件名
第一步得到文件路径(directory)
利用Path.getfilename(路径)得到文件名。
listbox包含双击事件
所选名的索引
作者: 李钢-15级    时间: 2016-6-3 19:06
本帖最后由 李钢-15级 于 2016-6-6 10:51 编辑

进程()
可以process类,开启和关闭电脑上的一些应用程序。也可以通过进程打开指定的文件(摇奖机那一讲)

线程
主线程执行窗口相关的操作,而执行其他操作时,主线程被占用,那么窗体就会假死 。这时就出现多线程的概念,将占用主线程的方法给另一个线程
  thread th = new thread(方法(该方法的参数必须是object类型,其他类型就需强转)),th.start()(表示已经准备好)  
前台线程(默认新创建的线程都是前台线程)只有前台线程关闭了,才全部关闭程序只要前台关闭了,后台自动结束。设置后台线程th.ISBACKGROUND=TRUE.
跨线程
conrtol。check。。。(控制非法线程禁止访问当前线程)

当主线程关闭,而其他的线程还在继续运行时,可以手动关闭。在点×号时去关掉(有这个事件)
th。abort()
thread。sleep()(相当于延时函数)
作者: 李钢-15级    时间: 2016-6-4 10:14
本帖最后由 李钢-15级 于 2016-6-6 10:19 编辑

对话框
openfilediaolgy。savefiledialogy。colordialogy ,frontdialogy(等等,只是类,需要创建对象并调用方法,也可以设置一些属性,如标题,是否多选,所选类型等等)、//控件中也有字体(front)和color

  
string  path  =  .filename(对话框中所选文件的路径)  如果路径是空的话,直接用return 结束方法
string  path  =  .filenames(对话框中所选文件的路径)   复数形式


listbox.selectedindex(box当中选中的索引)  从0开始
作者: 李钢-15级    时间: 2016-6-4 10:29
本帖最后由 李钢-15级 于 2016-6-4 10:44 编辑

panel(容器当中)也是一个控件
可以对操作事件对容器内的东西进行隐藏或者显示
作者: 李钢-15级    时间: 2016-6-4 11:03
socket 网络编程
作者: 李钢-15级    时间: 2016-6-6 10:52
本帖最后由 李钢-15级 于 2016-6-6 13:44 编辑

GDI+(画图的)
建立一个图形对象,建立pen对象,画不同的图形。
包括验证码
作者: 李钢-15级    时间: 2016-6-6 14:15
本帖最后由 李钢-15级 于 2016-6-10 10:36 编辑

HTML+css(静态网页)
js+jquery(动态网页)

HTML存在许多的标签,把我们想要显示的内容包含在这些标签中,而这些内容的样子效果由css来决定

建一个txt文件,名称改为html.开始写基本框架标签
(不区分大小写)
基本结构                                                                  
<html>                                                                              <P></P>当作段落处理   &nbsp 空格     标题标签 <h#>(#1到6)                           
  <head>
     <title>智能家居</title>                                        <Img/>图片标签  (属性src 路径,width heigth(以px结尾)  alt(图片不能正常显示时的值)       title(光标移动到图片时显示的值))
   </head>                                                                                   border(边框)
     <body>                                                                                <Img src=“路径” width=“值px” border=“1px”   alt=“值”   title=“标题”/>
                                                                                                   <!--注释-->
             设备状态
     </body>
</html>
作者: 李钢-15级    时间: 2016-6-10 10:40
本帖最后由 李钢-15级 于 2016-6-10 11:57 编辑

html
<b></b>加粗<b></b>斜体<u></u>下划线<s></s>删除线<sup></sup>上标 <sub></sub>下标
<hr/>(分割线类似这样的标签都是自己开始自己结束)
<br/>(换行,与p不一样,p有间隙)

&gt(大于符号)&lt(小于符号)&amp(&号)
例5&gt;3

<font></font>字体标签 属性size(1到7)颜色color face(字体)
<font size=‘’ face=’” clolor=’”> 吻别   </font>
作者: 李钢-15级    时间: 2016-6-10 11:58
本帖最后由 李钢-15级 于 2016-6-10 12:26 编辑

a标签的使用
超链接
<a  href="l链接的地址" target=“_blank”(新窗口  _self不开新窗口) ></a>

页面里面的跳转
<A name="顶端" href="#底端">回到底端</A>(在顶端写这一行代码)
<A name="底端" href="#顶端"></A>(在底端写这一行代码)

页面间的跳转
<A name="啦啦" href="那个页面的名字.html#哈哈">回到底端</A>
<A name="哈哈" href="这个页面的名字,html#啦啦"></A>

发送邮件
<a  href="mailto:邮箱">发送邮件</a>


作者: 李钢-15级    时间: 2016-6-10 12:26
本帖最后由 李钢-15级 于 2016-6-10 12:34 编辑

body当中的属性
<body text="颜色' link=“超链接的颜色” alink=“点的时候的颜色” vlink=“点之后的颜色”  bgcolor=“body背景颜色” bankgroung=“图片做背景”>
作者: 李钢-15级    时间: 2016-6-10 12:58
本帖最后由 李钢-15级 于 2016-6-10 14:57 编辑

无序列表
有序列表
自定义列表


表格

<table  border= "1px" cellpadding="0px" cellspacing="0px"(这两个分别是单元格之间距离以及文本与右侧之间的距离) width="100" HEIGTH="100">
   <tr>(第一行)
       <td rowspan="2"(跨列colspan)>张三</td>(第一个单元格跨越了2行)
       <td align=‘’(valign)> 语文</TD>(第一行第二列)(如果是th则是标题加粗的,自动居中)(align 靠左 靠右还是居中 valign靠上 靠下 还是居中)
        <td> 98</TD> (第一行底三列)
    </tr>
    <TR>(第二行)
        <td> 数学</TD>(第二行第二列)
        <td> 88</TD> (第二行第三列)
    </tr>
</TABLE>
作者: 李钢-15级    时间: 2016-6-10 14:58
本帖最后由 李钢-15级 于 2016-6-10 15:36 编辑

表单
作者: 李钢-15级    时间: 2016-6-10 15:36
本帖最后由 李钢-15级 于 2016-6-10 16:01 编辑

div(把网页分块)和span
框架标签(把网页组合)
作者: 李钢-15级    时间: 2016-6-10 16:02
css




欢迎光临 重工电子论坛 (http://cqutlab.cn/) Powered by Discuz! X3.1