视频中的重要知识点
C#
l 在定义的方法中尽量不要对用户做输入提示,让主函数提示,否则会缩小方法适用范围
l 类:类不占内存,对象才占内存
在我们自己定义的类中,写方法时,先不加static
在类中定义的变量我们通常叫属性,其实应该叫字段
Java在类外只能用方法给变量赋值
什么叫属性?通俗点说就是定义一个public的具有get/set方法的变量,这个变量是用于保护一个私有变量的。
允许外部访问的变量一定要声明为属性
字段封装
l 当我们初始化一个类时,系统会自动对这个类的属性进行初始化:
数字类型初始化为0
string类型初始化为null
char类型初始化为\0
使用构造方法的好处:
(1) 对多个属性进行赋值时,不需要重复的写实例名
(2) 可以保证用户在new一个对象的时候必须对某一个属性进行赋值
(3) 和(2)类似,在创建对象时,对只读属性进行初始化
构造方法没有返回值,连void都可以省略不写;定义构造方法一般加public;构造方法传参是只读属性
类图:项目->右键->查看类关系图
l 析构函数(前面加~):构造函数是实例化对象时最先调用的方法,析构函数是最后调用的方法。
不能在结构中定义析构函数,只能对类使用析构函数。
一个类只能有一个析构函数
无法继承或重载析构函数,它们是自动被调用的
析构函数既没有修饰符,也没有参数
params 传递多参数
l 如果代码和被使用的类在一个namespace则不需要using
在不同命名空间下的类调用有两种方法:
1、 写全称命名空间.类名
2、 先using引用命名空间,再调用
可以在命名空间下建立命名空间。.Net命名空间是逻辑划分,和物理位置无关
System是.Net框架的根命名空间
常用命名空间:System.Threading和线程有关 Text和文本编码有关 Data和数据库操作有关 Collections和集合有关
l string可以看做是char的只读数组。
C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改
如果要对char进行修改,那么就必须创建一个新的字符串,用s.ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数来创建char
数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。
String类常用方法:
ToLower():得到字符串的小写形式
注意:字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。
ToUpper():得到字符串的大写形式;Trim():去掉字符串两端的空白
s1.Equals(s2,StringComparison.OrdinalIgnoreCase)两个字符串进行比较不区分大小写
字符串的连接用“+”,两边只要有一个是字符串类型,另一个也会被自动转换为字符串类型;一切对象都可以用ToString()方法转换成字符串类型
字符串的分割:string[] Split(char[] separator,StringSplitOptions options)将字符串按照指定的char分隔符分割为字符串数组(options取RemoveEmptyEntries的时候移除结果中的空白字符串)
字符串替换:string Replace(string oldValue,string newValue)将字符串中出现oldValue的地方替换为newValue
取子字符串:string Substring(int startIndex,int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。
boolContains(string value)判断字符串中是否含有子串value,可用于过滤敏感词汇
boolStartsWith(string value)判断字符串是否以子串value开始
boolEndsWith(string value)
intIndexOf(string value)取子串value第一次出现的位置
l 方法中定义的变量称为局部变量,不能加访问修饰符
数据库
l 平时谈到“数据库”可能有两种含义:
MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog)
不同品牌的DBMS有自己的不同特点:MYSQL、MSSQLServer、DB2、Oracle、Access、Sybase等。对于开发人员来讲大同小异
除了Access和SQLServerCE等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习、开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器上。
l Catalog(分类)的作用:
便于对各个catalog进行个性化管理;
避免命名冲突;
安全性更高。
列(Column)、字段(Field)
l SQLServer的两种验证方式:用户名验证和Windows验证,开发时用Windows验证就行。
l 用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。用标识列的字段在insert的时候不用指定主键的值。
Int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低,数据导入导出的时候很痛苦。
Guid的优点:效率高、数据导入导出方便;缺点占用空间大、不易读。
l Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等。
ORDER BY子句要放到WHERE子句之后
l Alter::用于在已有的表中添加、修改或删除列
添加列:ALTERTABLE table_name
ADD column_name datatype
删除列:ALTERTABLE table_name
DROP COLUMN column_name
更改表中列的数据类型:ALTERTABLE table_name
ALTER COLUMN column_name datatype
ADO.Net
ADO.Net中提供了对各种不同数据库的统一操作接口。
l ExecuteNonQuery方法执行一个非查询语句(Update、Insert、Delete等)
ExecuteScalar方法用于执行查询,返回object类型
得到自动增长字段的主键值,在values关键词前加上output inserted.Id,其中Id为主键字段名。执行查询结果就是插入的主键值,用ExecuteScalar执行最方便。例:
cmd.CommandText=”Insertinto T_Users(UserName,Password) output inserted.Id values(‘admin’,’888888’)”;
inti=Convert.ToInt32(cmd.ExecuteScalar());
ExecuteReader执行有多行结果集的,例
SqlDataReaderreader=cmd.ExecuteReader();
while(reader.Read())
{
Console.WriteLine(reader.GetString(1));
}
reader的GetString、GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号
l using在出了作用域以后调用Dispose,SqlConnection、FileStream等的Dispose内部都会做这样的判断:判断有没有close,没有则先Close再Dispose。
l WinForm中新建一个类,这个类要写在 class Form类下面,否则报错。
一个类的ToString方法默认返回这个类的类名
ComboBox的DisplayMember属性:设定列表中显示对象的哪种属性
l (视频:读取配置中的连接字符串)访问数据库的三种方式:DataReader、DataSet、强类型DataSet
l 将连接字符串写在App.config中:
添加App.config文件:添加→新建项→常规→应用程序配置文件。App.config是.Net通用配置文件,在ASP.Net中也能同样使用。
在App.config中添加connectionStrings段,添加一个add项,用name属性起一个名字(比如DbConnStr),connectionStrings属性指定连接字符串。
在“引用”节点上点右键“添加引用”,找到System.configuration。不是所有.Net中的类都能直接调用,类所在的Assembly要被添加到项目的引用中才可以。
ConfigurationManager.ConnectionStrings[“DbConnStr”].ConnectionString得到连接字符串。
l 文件选择对话框 FolderBrowserDialog
按照通配符搜索目录下的文件string[] Directory.GetFiles(string path,string searchPattern,SearchOptionsearchOption)
Path.GetFileNameWithoutExtension(filename),得到文件的文件名(不要扩展名);Path.Combine(stringpath1,string path2),将两个路径合并(高级字符串拼接);Path.GetExtension(string path),得到文件的后缀;Path.GetFileName(string path),得到文件的文件名;Path.GetFullPath(string path):得到文件的全路径
string[] lines = File.ReadAllLines(file);//当文件很小时不用StreamReader,可以一次性加载
HTML
l 浏览器兼容性测试:ACID
IE是浏览器的一种,还有FireFox、Opera、Chrome等,注意遨游、(Maxthon)、世界之窗、搜狗浏览器、360浏览器并不是独立于IE的,其内核还是IE。用WebBrowser控件开发浏览器
所谓Trident引擎就是IE的WebBrowser控件。很多非IE核心的浏览器用的是WebKit引擎,比如遨游3或搜狗的双核、Chrome、Safari
l 静态页面:有一个html页面保存在服务器上
动态页面:服务器上没有浏览者要看的页面,而是服务器动态生成的HTML页面发给浏览器,动态语言的服务器端可以用C#、VB.Net、PHP、Java、C等编写
l 所有内容都在<html></html>标签之内;<head></head>内放的是头部信息,是对页面的描述,不会直接显示在页面内,<title>在<head>中
body标签的bgcolor属性可以设定网页的背景颜色
l HTML和XML的联系、区别
属性值:HTML中属性值既可以用单引号括起来,也可以用双引号,甚至不用引号(不推荐)。
注释:HTML和XML一样用<!--注释-->
特殊字符:HTML中<、>有特殊含义,空格是不会被显示的,所以需要特殊符号,相当于C#中的‘\n’转义符。<(小于号,less than);>(大于号,greater than); (空格,no-break space)。
格式标签:<p></p>创建段落;<br/>回车,也可以写成<br>,在HTML中有一些标签可以不关闭,<br>就是一个,这是和XML不一样的地方,但为了遵循XHTML规范,推荐像XML一样严格关闭。
l 文字格式:
<br/>回车,<p>分段。<p>前后会有较大的空白,<br/>则没有
<center>传智博客</center>居中显示
h标签,HTML定义了<h1></h1>到<h6></h6>六个h标签,分别表示不同大小的字体。
<b>a</b>粗体
<font></font>字体标签
l 超链接深入
相对URL:相对URL表示相对于当前文档的资源,“/”表示网站根目录,“../”表示父目录,“../../”表示父目录的父目录,“./”或者什么都不写表示相对于当前路径的目录。站内引用最好用相对URL,这样域名改变了、目录改变了都不受影响。例:
<a href=”a.htm”><img src=”a.jpg”/></a>
将<a>的target属性设为”_blank”就可以在新窗口中打开超链接
用name属性为<a>起名字:<a name=”Last”>这里是最后</a>。这样可以通过<a href=”#Last”>转到平台</a>来跳转到超链接的部分。
l 图片
<img src=”a.jpg”/>注意图片是链接的,不是插入的,所以如果src指向的文件不存在了,就看不见了。alt属性为图片无法显示时显示的文本,鼠标放上去也会有悬浮提示“点击查看大图”;border属性指定边框,border=”0”,不显示边框;width、height属性指定图片的显示大小,如果不指定则是图片的原始大小。最好指定,如果不指定,图片会不占位置,图片下载后才调整大小,会造成页面很乱。
如果网页上要显示小图,不要只把大图设定一下width和height来缩小,因为仍然会下载大图,会使得加载速度很慢。
l 列表、表格
列表:<ul><li>灌水区</li><li>版务区</li><li>原创贴图</li></ul>。unordered list
有序的列表<ol></ol>,用的少 ordered list
表格:<table></table>为表格,在内部通过<tr>创建行,<tr>内部通过<td>创建单元格。可以将table的border属性设为0来隐藏表格线。
<tr>的属性:align水平对齐,可选值left、right、center;valign垂直对齐,可选值top、middle、bottom。
建议将表头用<thead>代替<tr>
l 关于表单(视频教程)网站表单与填表
<form>标签为表单标签。如果要把数据提交到数据库,则需要将<input>、<textarea>、<select>等表单元素放到form中。
<input>是主要的表单元素,type的可选值:submit(提交按钮)、button(普通按钮)、checkbox(复选框)、file(文件选择框)、hidden(隐藏字段)、image(图片按钮)、password(密码框)、radio(单选按钮)、reset(重置)、text(文本框)
Input表单详解
Submit:点击submit按钮表单就会被提交给服务器,中文IE下默认按钮文本为“提交查询”,可以设置value属性修改按钮的显示文本
Text:size属性为宽度,value为值,maxlength为可以输入的最大长度,readonly只读。
<input type = “text” readonly/>或者<input type = “text” readonly=”readonly”/>(推荐)
只有一个可选值的属性可以省略属性值,只写属性名
Radio:通过name属性分组,通过取指定name的值就知道谁被选中,不用单独判断
File:向服务器提交file的内容,form的enctype必须设置为multipart/form-data、method属性为POST。
image:使用src属性指定图片的地址,用来实现美化的“登录按钮”。
<select>标签
l 用来创建类似于WinForm中的ComboBox或者ListBox
l 如果size属性大于1就是ListBox,否则就是ComboBox。
<selectmultiple>或者<selectmultiple=”multiple”>(推荐),那么就是可以多选的ListBox
l select中的项是<option>,<option>北京</option>还可以设定项的值
<optionvalue=”1”>北京</option>。
l 将一个option设置为选中:<optionselected>333</option>或者
<optionselected=”selected”>333</option>(推荐)就可以将这个项设定为选择项
l 如何实现“不选择”,添加一个<option value=”-1”>--不选择--<option>,然后编程判断select选中的值如果是-1就认为是不选择。
l select分组选项,可以使用optgroup对数据进行分组,分组本身不会被选择,无论对于下拉列表还是列表框都适用。
l 其他标签:
<textarea>多行文本(也是表单元素):<textarea>文本</textarea>,cols、rows属性表示行数和列数。
<label>:在<input type=”text”>前可以写普通的文本来修饰,但是单击修饰文本的时候input并不会得到焦点,而用label则可以,for属性指定要修饰的控件的id,<label for=”txt1”>asdfad</label>
fieldset:GroupBox效果,将控件划分一个区域,看起来更规整
<fieldset>
<legend>常用</legend>
<inputtype=”text”/>
</fieldset>
l 样式选择器:对于非元素内联的样式需要定义样式选择器,通俗的说就是这些样式适合于哪些元素;三种:标签选择器、class选择器、id选择器
1、标签选择器 input{border-color:Yellow;color:Red;},对于指定的标签采用统一的样式
2、class选择器,定义一个命名的样式,然后在用到它的时候设定元素的class属性为样式的名称,还可以同时设定多个class,名称之间加空格。
样式名称开头加“.”
.warning{background:Yellow;}
.highlight{font-size:xx-large;cursor:help;}
<table><tr><td class=”highlight”>aaa</td><tdclass=”warning”>bb</td><td class=”highlight warning”>ccc</td></tr></table>
3、标签+class选择器
class选择器也可以针对不同的标签,实现相同的样式对于不同的标签有不用的效果,只要在样式名前加标签名即可。
input.accountno{text-align:right;color:Red;}
label.accountno{font-style:italic;}
<input class=”accountno” type=”text”value=”1111111”/>
<label class=”accountno”>33333</label>
4、 id选择器
为指定id的元素设定样式,id前加#
#username
{
font-size:xx-large;
}
<input id=”username” type=”text”value=”aaaaaa”/>
问题:
fieldset和div、span有何区别?
列表与表格的区别?
class选择器与id选择器的区别?