private:私有成员,在类的内部才能访问程序员
protected:保护成员,在该类内部和继承本类的子类中能够访问web
public:公共成员,彻底公开,没有访问限制数据库
internal:在当前程序集中能够访问编程
Connection:连接对象 用于与特定的数据源创建连接c#
Command:命令对象 主要能够用来对数据库发出一些指令,例如能够对数据库下达查询、新增、修改、删除数据等指令跨域
DataReader:数据流对象 一个向前的只读数据流数组
DataAdapter:适配器对象 主要是在数据源以及DataSet 之间执行数据传输的工做,它能够透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。浏览器
DataSet:数据集对象 这个对象能够视为一个暂存区(Cache),能够把从数据库中所查询到的数据保留起来,放在内存中。至关于内存中的一张表或多张表缓存
1.使用QueryString, 如....?id=1; response. Redirect().... 服务器
2.Application 对象 服务器上
存储: Application["name"]="张三":
获取: string name=Application["name"].ToString();
3.Session 对象 服务器上
存储: Session["name"]="张三":
获取:string Session["name"].ToString();
4.Cookie:是个字符串 存在在客户端上
存值:
HttpCookie cookie=new HttpCookie(string name,string value)
cookie.Expires.AddDay(7); //Expires 过时时间
Response.Cookies.Add(cookie);
获取:
HttpCookie cookie=Request.Cookies[string name];
string s=cookie.Value;
或
string s=Request.Cookies[string name].value;
5.Server.Tranfer //地址栏上不会显示target.aspx,而response. Redirect() 会在地址栏上显示target.aspx
Server.Transfer( "target.aspx?param1=1111¶m2=2222 ")
接收页面: string str = Request[ "param1 "]
1, 运算符 用于建立对象和调用构造函数。
Class cl=new Class();
int i=new int();
i=0;
2,修饰符 能够显式隐藏从基类继承的成员。
●若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
●要想访问被隐藏的基类的成员变量、属性或方法,办法就是将子类造型为父类,而后经过基类访问被隐藏的成员变量、属性或方法。
3,约束 约束指定泛型类声明中的 任何类型参数 都必须有公共的无参数构造函数。
Class ItemFactory<T> where T:new()
ItemFactory<Student> Student中必需要无参数构造函数
sealed 修饰符用于防止从所修饰的类派生出其它类。(不能继承) 若是一个密封类被指定为其余类的基类,则会发生编译时错误。
六、请编程遍历页面上全部TextBox控件并给它赋值为string.Empty?
// 1,若是没指定是那里面的Controls ,须要遍历两边 foreach(Control item in Controls) { foreach(Control con in item.Controls) { TextBox tb=con as TextBox;//把con做为TextBox控件 if(tb!=null) tb.Text=String.Empty; } }
//2,指定是Form里面的Controls 一遍便可 foreach(Control item in this.Form.Controls) { TextBox tb=item as TextBox;//把con做为TextBox控件 if(tb!=null) tb.Text=String.Empty; }
七、在.net中,配件的意思是?
程序集(Assembly)。(中间语言,源数据,资源,装配清单)
8、装箱和拆箱
.net包含一个特殊的Object类,能够接受任意的数据类型的值
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。
object obj = null;//引用类型 obj = 1;//装箱,boxing。把值类型包装为引用类型。 int i1 = (int)obj;//拆箱。unboxing
1.用户界面表示层(UI);2.业务逻辑层(BLL);3.数据访问层(DAL); 目的即为了“高内聚,低耦合”的思想。
1,表现层(UI):调用业务逻辑层(BLL)里面的方法来呈现数据给用户看 实质:具体解决作什么的问题
2,业务逻辑层(BLL) :主要针对具体的问题的操做 实质:负责处理U层的问题
3,数据访问层(DAL) :对数据的操做具体为BLL层提供服务 实质:就是对数据库的类容的增,删,改,查 封装的SQLHelper类
4,实体层(Model) :原始数据 实质:完成数据库与实体类对应的功能,一个类是一张表,一个属性是一个字段
三层结构是N层结构的一种,通常来讲,层次之间是向下依赖的,下层代码未肯定其接口(契约)前上层代码是没法开发的,下层代码接口(契约)的变化将使上层的代码一块儿变化。
优势: 分工明确,条理清晰,易于调试,并且具备可扩展性。
缺点: 增长成本。
须要实现IEnumerable接口或声明GetEnumerator方法的类型
GC是垃圾收集器。程序员不用担忧内存管理,由于垃圾收集器会自动进行管理。
GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须由程序员手工回收,一个例子就是FileStream或者SqlConnection须要程序员调用Dispose进行资源的回收。
要请求垃圾收集,能够调用下面的方法:GC.Collection()通常不须要手动调用GC.Collection()。
任何集合类都实现了IEnumerable接口,因此任何集合类对象都有一个GetEnumerator()方法,该方法能够返回一个实现了 IEnumerator接口的对象,这个返回的IEnumerator对象既不是集合类对象,也不是集合的元素类对象,它是一个独立的类对象。经过这个对象,能够遍历访问集合类对象中的每个元素对象
咱们常常用的foreach便是一种语法糖,实际上仍是调用Enumerator里面的Current和MoveNext实现的遍历功能。
List<T> 泛型类
Stack<T> 堆栈 后进先出的访问各个元素
Dictionary<TKey, TValue> 字典类, key是区分大小写;value用于存储对应于key的值
HashSet<T> 此集合类中不能有重复的子元素
SortedList<TKey, TValue> 排序列表, key是排好序的数组。
将ASP.NET程序须要呈现的一个网页分为*.aspx和*.cs这两个文件,即代码分离技术,实现了HTML代码和服务器逻辑代码的分离,这样更方便于代码编写、整理及调试。
1,引用命名空间 using System.Text;
2,为命名空间或类型建立别名 为了不出现名称冲突,能够经过设定别名来解决.
3,using 语句
using语句容许程序员指定使用资源的对象应当什么时候释放资源.using语句中使用的对象必须实现IDisposable接口.此接口提供了Dispose方法,该方法将释放此对象的资源
a, using语句只能用于实现了IDisposable接口的类型,
b,using语句适用于清理单个非托管资源的状况,而多个非托管对象的清理最好以try-finaly来实现
在程序编译阶段,编译器会自动将using语句生成try-finally语句,并在finally块中调用对象的Dispose方法,来清理资源.因此,using语句等效于try-finally语句
IDisposable接口定义一种释放分配的非托管资源的方法,GC只对托管对象释放内存,而对非托管对象资源不能操做。
String类型数据每次从新赋值都是开辟一个新的内存空间新的数据放在里面,变量的引用从新指向新空间中的的地址,原来的数值还在内存中并无变化经过CG回收。
s不指向原来那个对象了,而指向了另外一个 String对象,内容为"123",原来那个对象还存在于内存之中,只是s这个引用变量再也不指向它了。
不能够。由于非static方法是要与对象关联在一块儿的,必须建立一个对象后,才能够在该对象上进行方法调用,而static方法调用时不须要建立对象,能够直接调用。也就是说,当一个static方法被调用时,可能尚未建立任何实例对象,若是从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪一个对象上的呢?这个逻辑没法成立,因此,一个static方法内部发出对非static方法的调用
经常使用的类:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T>
经常使用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、 IList、IDictionary
value,它的类型和属性所声名的类型相同。
不支持。能够用接口来实现。
System.Object
2二、经过超连接怎样传递中文参数?
用URL编码,经过QueryString传递,用urlencode编码 用urldecode解码。
aspx传aspx
//请求URL中对中文编码
string Name = "中文参数";
Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)) ;
//接收端进行解码
string Name = Request.QueryString["Name"];
Response.Write(Server.UrlDecode(Name)) ;
2三、AJAX解决什么问题?如何使用AJAX?AJAX有什么问题须要注意?项目中哪里用到了AJAX?
AJAX解决的问题就是“无刷新更新页面”
1,建立异步对象
var xmlHttp=new XMLHttpRequest();
或 var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
2,加载要获取的服务器页面
xmlHttp.open(Method,URL)
3,判断异步调用的状态onreadystatechange事件中判断xmlHttp.readyState和xmlHttp.Status
4,发送异步请求
xmlHttp.send();
AJAX最重要的问题是没法跨域请求(www.rupeng.com →so.rupeng.com),也就是没法在页面中向和当前域名不一样的页面发送请求,可使用在当前页面所在的域的服务端作代理页面的方式解决。
2四、开放式问题:你常常访问的技术类的网站是什么?
博客园和CSDN
2五、你对.net的GC的理解
GC是.Net的垃圾收集器,能够进行内存资源的回收,程序员无需关心资源的回收,当一个对象没有任何引用的时候就能够被回收了。一个对象能够被回收并不意味着必定会被当即回收,GC会选择时机进行回收。能够调用GC.Collect()让GC当即回收。GC不能回收非托管资源,对于非托管资源通常都实现了IDisposable接口,而后使用using关键字进行资源的回收。
2六、请你简单的说明数据库创建索引的优缺点
使用索引能够加快数据的查询速度,不过因为数据插入过程当中会建索引,因此会下降数据的插入、更新速度,索引还会占磁盘空间。
2七、Session有什么重大BUG,微软提出了什么方法加以解决?(常考)
是iis中因为有进程回收机制,系统繁忙的话Session会丢失,能够用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,并且没法捕获Session的END事件。
2八、说说在软件设计中你遇到的以空间换时间的例子?
Cache、索引、简繁转换用Dictionary。谈Cache(缓存)、索引这些例子。用额外的磁盘、内存空间的消耗来提升执行速度
2九、asp.net中的错误机制。(常考)
.NET提供了四种错误处理机制,它们有必定的优先级顺序:
Page_Error事件 > ErrorPage属性 > Application_Error事件 > <customErrors>配置项
要让ErrorPage属性可以发挥做用,<customErrors>配置项中的mode属性必须设为"On"。
Application_Error事件在 Global.asax中
30、有一个10个数的数组,计算其中不重复数字的个数。{3,5,9,8,10,5,3,7,6,4}
HashSet<T> 做为一种存放内存的数据,没法向里面添加剧复的值
int x = 0; int[] list = { 3, 5, 9, 8, 10, 5, 3 }; HashSet<int> set = new HashSet<int>(); for (int i = 0; i < list.Length; i++) { set.Add(list[i]); } foreach (int item in set) { x++; } Console.WriteLine(x); Console.ReadLine();
3一、下面是一个由*号组成的4行倒三角形图案。要求:1、输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”;二、在屏幕上打印这个指定了行数的倒三角形。
*******
*****
***
*
aa: Console.Clear(); Console.WriteLine("请输入倒三角形的行数: 行数的取值在3-21之间"); int i=int.Parse(Console.ReadLine()); if (i<3||i>21) { Console.WriteLine(" 非法行数 !!"); Console.ReadLine(); goto aa; } int x = i; for ( ; i >0; i--) { for (int j = 0; j < x-i; j++) { Console.Write(" "); } for (int k =2*i-1; k >0; k--) { Console.Write("*"); } Console.WriteLine(); } Console.WriteLine();
3二、下面的程序执行结果是什么?
class Person
{ public int Age { get; set; }
}
int i1 = 20;
int i2 = i1;
i1++;
Console.WriteLine(i2); //值类型
Person p1 = new Person();
p1.Age = 20;
Person p2 = p1;
p1.Age++;
Console.WriteLine(p2.Age); //引用类型 引用的是地址 p2和p指向的是同一个地址
20 、21
3三、下面程序的执行结果是什么?
public struct Point
{
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
Point p1 = new Point(100, 100);
Point p2 = p1;
p1.x = 200;
Console.WriteLine("{0},{1}", p1.x, p2.x); //struct 是值类型 copy的值
200,100
3四、不用JQuery等框架实现AJAX无刷新登陆。(常考)
1,建立异步对象
var xmlHttp=new XMLHttpRequest();
或 var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
2,加载要获取的服务器页面
xmlHttp.open(Method,URL)
3,判断异步调用的状态
3,判断异步调用的状态onreadystatechange事件中判断xmlHttp.readyState和xmlHttp.Status
4,发送异步请求
xmlHttp.send();
3五、Http状态码各是什么意思。
成功2×× 成功处理了请求的状态码。
200 成功
重定向3×× 每次请求中使用重定向不要超过 5 次。
客户端错误4×× 表示请求可能出错,妨碍了服务器的处理。
404 找不到请求的网页。服务器上不存在的网页常常会返回此代码
服务器错误5×× 表示服务器在处理请求时发生内部错误。这些错误多是服务器自己的错误,而不是请求出错。
500 服务器遇到错误,没法完成请求
3六、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,何时被执行?
int Get(){ int i=1;
try{ retun i; }
finlly{ i++; }
}
结果为1 而不是2
在执行return语句时,已经把返回的结果准备好了,(这个值改不了)
这时转到finally语句去执行,再返回结果
总结:
try{}中的return执行后在没有返回数据时先去执行finally{}中的代码,而后再返回。因此说finally{}在return中间执行。
3七、一个数组:1,1,2,3,5,8,13,21...+m,求第30位数是多少?用递归实现;(常考!!!,提示:搜索斐波那契数列)
斐波那契数列百度百科
斐波那契数列指的是这样一个数列:0、一、一、二、三、五、八、1三、2一、……
在数学上,斐波纳契数列以以下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
static void Main(string[] args) { //会一直调本身,一直调到i为1 Console.WriteLine(Foo(30)); Console.ReadLine(); } public static int Foo(int i) { if (i <= 0) return 0; else if (i > 0 && i <= 2) return 1; else return Foo(i - 1) + Foo(i - 2); }
3八、 产生一个int数组,长度为100,并向其中随机插入1-100,而且不能重复。(要求使用两种方法)
1,
List<int> myList = new List<int>(); Random ran = new Random(); while (myList.Count<100) { int num = ran.Next(1, 101); if (!myList.Contains(num)) { myList.Add(num); } } foreach (int item in myList) { Console.WriteLine(item); } Console.WriteLine(myList.Count); Console.ReadLine();
2,
HashSet<int> myList = new HashSet<int>(); Random ran = new Random(); while (myList.Count<100) { int num = ran.Next(1, 101); myList.Add(num); } foreach (int item in myList) { Console.WriteLine(item); } Console.WriteLine(myList.Count); Console.ReadLine();
3九、 冒泡排序数组(背也要背下来,50%必考!)
int[] myList = new int[] { 5, 9, 1, 10, 7, 6, 4, 3, 8, 2, 7 }; for (int i = 0; i < myList.Length-1; i++) { for (int j = 0; j < myList.Length-1; j++) { if (myList[j]>myList[j+1]) { int temp = myList[j]; //中间变量用来作交换 myList[j] = myList[j + 1]; myList[j + 1] = temp; } } } foreach (int item in myList) { Console.WriteLine(item); } Console.ReadLine();
40、C#中的委托是什么?事件是否是一种委托?事件和委托的关系。
委托能够理解为指向一个函数的指针。
委托和事件没有可比性,由于委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别。事件的内部是用委托实现的。由于对于事件来说,外部只能“注册本身+=、注销本身-=”,外界不能够注销其余的注册者,外界不能够主动触发事件,所以若是用Delegate就无法进行上面的控制,所以诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove本身,不能赋值。事件只能+=、-=,不能= 。加分的补充回答:事件内部就是一个private的委托和add、remove两个方法。
4一、override与重载(overload)的区别
重载是方法的名称相同。参数或参数类型不一样,进行屡次重载以适应不一样的须要。重载(overload)是面向过程的概念。Override 是进行基类中函数的重写。Override是面向
对象的概念
4二、属性和public字段的区别是什么?
公共字段只是类用public修饰符所公开的简单公共变量,而属性则是对字段的封装。
属性能够对设值、取值的过程进行非法值控制,好比年龄禁止设值负数,而字段则不能进行这样的设置。
4三、CTS、CLS、CLR分别做何解释(重要)把英文全称背过来。
CTS:Common Type System 通用系统类型。Int3二、Int16→int、String→string、Boolean→bool
CLS:Common Language Specification 通用语言规范。不一样语言语法的不一样。
CLR:Common Language Runtime 公共语言运行时,就是.Net提供的那些 类。
4四、C#和.Net的关系
.net是一个运行平台,C#只是用于编写运行在该平台上的一种语言
.net是框架,C#是语言
4五、在dotnet中类(class)与结构(struct)的异同?
Class能够被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。
Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。Int3二、Boolean等都属于结构体。
4六、堆和栈的区别?
栈是编译期间就分配好的内存空间,所以你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。
堆是程序运行期间动态分配的内存空间,你能够根据程序的运行状况肯定要分配的堆内存的大小。
4七、值类型和引用类型的区别?
1.将一个值类型变量赋给另外一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象自己。
2.值类型不可能派生出新的类型:全部的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也能够实现接口。
3.值类型不可能包含 null 值:然而,可空类型功能容许将 null 赋给值类型。
4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值
4八、C#中的接口和类有什么异同。
不一样点:
不能直接实例化接口。
接口不包含方法的实现。
接口能够多继承,类只能单继承。
类定义可在不一样的源文件之间进行拆分。用partial 修饰
相同点:
接口、类和结构均可以从多个接口继承。
接口相似于抽象基类:继承接口的任何非抽象类型都必须实现接口的全部成员。
接口和类均可以包含事件、索引器、方法和属性。
4九、abstract class和interface有什么区别?
同点:
都不能被直接实例化,均可以经过继承实现其抽象方法。
不一样点:
接口支持多继承;抽象类不能实现多继承。
接口只能定义行为;抽象类既能够定义行为,还可能提供实现。
接口能够用于支持回调(CallBack);抽象类不能实现回调,由于继承不支持。
接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;抽象类能够定义字段、属性、包含有实现的方法。
接口能够做用于值类型(Struct)和引用类型(Class);抽象类只能做用于引用类型。例如,Struct就能够继承接口,而不能继承类。
50、XML 与 HTML 的主要区别
1. XML是区分大小写字母的,HTML不区分。
2. 在HTML中,若是上下文清楚地显示出段落或者列表键在何处结尾,那么你能够省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。
HTML:<img src="1.jpg"><br><br>
XML:<img src="1.jpg"></img><br/><br/>
3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符做为结尾。这样分析器就知道不用 查找结束标记了。
4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
5. 在HTML中,能够拥有不带值的属性名。在XML中,全部的属性都必须带有相应的值。
XML是用来存储和传输数据的
HTML是用来显示数据的
5一、string str = null 与 string str =””说明其中的区别
sring str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。
string str = null没有string对象,string str = “”有一个字符串对象。
5二、StringBuilder 和 String 的区别?
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。因此在大量字符串拼接或频繁对某一字符串进行操做时最好使用 StringBuilder,不要使用 String
若是要操做一个不断增加的字符串,尽可能不用String类,改用StringBuilder类.
String类是一种传统的修改字符串的方式,由于系统先是把两个字符串写入内存,接着删除原来的String对象,而后建立一个String对象,并读取内存中的数据赋给该对象
而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,可以在已有对象的原地进行字符串的修改,简单并且直接。
5三、请叙述属性与索引器的区别。 (重要)
属性 索引器
经过名称标识。 经过签名标识。
经过简单名称或成员访问来访问。 经过元素访问来访问。
能够为静态成员或实例成员。 必须为实例成员。
属性的 get 访问器没有参数。 索引器的 get 访问器具备与索引器相同的形参表。
属性的 set 访问器包含隐式 value 参数。 除了 value 参数外,索引器的 set 访问器还具备与索引器相同的形参表。
5四、请解释ASP。NET中的web页面与其隐藏类之间的关系?
个ASP.NET页面通常都对应一个隐藏类,通常都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 代表经编译此页面时使用哪个代码文件,Inherits="T1.Tst1" 表用运行时使用哪个隐藏类
5五、DataReader和DataSet的异同?
DataReader使用时始终占用SqlConnection,在线操做数据库每次只在内存中加载一条数据,因此占用的内存是很小的是只进的、 只读的
DataSet则是将数据一次性加载在内存中.抛弃数据库链接..读取完毕即放弃数据库链接(非链接模式)
DataSet将数据所有加载在内存中.因此比较消耗内存...可是确比DataReader要灵活..能够动态的添加行,列,数据.
对数据库进行 回传更新操做(动态操做读入到内存的数据)
5六、string、String;int、Int32;Boolean、bool的区别?
1. bool是基本值类型,Boolean 是对象.
2. bool是Boolean的别名.bool是C#中的,Boolean是.net Framework中的。
最后总结:bool就像你的乳名,你爹妈以及大家内部所属成员都认识,Boolean就像你的学名。你们都认识。
不过无论按照学名仍是乳名称呼你,最终的目的是同样的,仍是你这我的。对于String和string的关系也是如此。
5七、Server.Transfer和Response.Redirect的区别是什么?(常考)
server.Transfer 仅是服务器中控制权的转向,在客户端浏览器地址栏中不会显示出转向 后的地址;
Response.Redirect 则是彻底的跳转,浏览器将会获得跳转的地址,并从新发送请 求连接。这样,从浏览器的地址栏中能够看到跳转后的连接地址。
Server.Transfer 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应 内容读取过来, 而后把这些内容再发给浏览器, 浏览器根本不知道服务器发送的内容是从哪 儿来的,因此它的地址栏中仍是原来的地址。 这个过程当中浏览器和 Web 服务器之间通过了 一次交互。
Response.Redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器从新去请求那个地 址,通常来讲浏览器会用刚才请求的全部参数从新请求。这个过程当中浏览器和 Web 服务器 之间通过了两次交互
5八、您在什么状况下会用到虚方法?它与接口有什么不一样?
子类从新定义父类的某一个方法时,必须把父类的方法定义为virtual,接口中的方法都是没有实现功能的方法体的。实现时,子类能够不从新定义虚方法,但若是一个类继承接口,那必须实现这个接口。
5九、post、get的区别?
数据:
get请求参数是放在请求头中的,长度有限制,根据浏览器设置决定,超过不会发送,直接丢掉;
post请求参数是专门放在数据区,没有长度限制;
请求次数:
------->根据浏览器不一样决定
get请求一次,直接将数据传递过去;
post:有可能直接是一次将数据传递过去;还有一种可能就是2次,第一次过去告诉服务器我将要带多大数据过来,第二次直接将数据传递过去;
显示与不显示
get请求参数会显示在你的浏览器的地址栏;
post请求参数不会显示在你的地址栏中;
60、.Net、ASP.Net、C#、VisualStudio之间的关系是什么?
asp.net是一种技术,要实现这种技术,
就得有底层的实现技术编程语言,这个语言就是C#,(只是绝大多数首选C#),要想用C#实现asp.net技术,就得有编程的工具软件,这个软件我一直用visual studio,visual studio支持许多种语言,是个很强大的软件,!VisualStudio是微软提供的用来进行.Net开发的集成开发环境