C#基础知识(一)

原创 2007年10月09日 13:45:00
 

这是昨天下班前总结的一天的学习心得。

帖出来和大家一起、分享学习的快乐。

C#的一些术语

.net管理代码的执行——启动代码、给它赋予相应的权限、分配内存以及存储数据,释放内存和资源。

.net还使用一个非常复杂的类库——即.net基类,以便在windows上执行大量的任务。

.net运行时CLR:公共语言运行时。它管理实际代码。

受管制的代码:在.net环境中运行的任何代码都成为受管制的代码managed code;
.net外部的其他代码也运行在windows上,这些代码称为unmanaged code;

中间语言(IL):在.net运行时加载和运行代码时,这种语言确定代码的未知。IL可以非常快速地编译成为内部的机器代码,同时支持.net功能。

公共类型系统(CTS)
为了实现语言的互操作性,必须有一组各种语言都认可的基本数据类型,这样才能对所以语言进行标准处理。

.net基类:这是一个扩展的类库,它包含预先写好的代码。

装配件(Assembly):装配件是编译好的受管制的代码的单元。

装配件高速缓冲存储器:这是存储共享装配件的磁盘区域。

公共语言规范(CLS):确保代码可以在任何语言中访问的最小标准集合。

反射:因为装配件完全是自我描述的,因此理论上可以编程访问装配件元数据。程序可以利用这个某些基类
来检查自己的元数据。

JIT编译:表示执行编译过程的最后阶段,即从中间语言转换成机器代码。

应用域:CLR允许不同代码在同一个过程空间中运行的方式。

无用存储单元收集:CLR清理不再需要的内存方式,应用程序不必负责内存的释放。

执行阶段的工作
在运行程序时,.net CLR会加载第一个装配件——即包含主程序入口的那个装配件,它使用
散列来验证这个装配件是否被塞满,使用元数据检查视图中定义的类型。另外如果程序带有
.net许可,CLR就会检查系统的安全策略和运行程序的帐号看它是否授予了请求许可。

CLR还验证代码的“内存类型的安全性",这样可保证代码不读写不属于它的内存。

CLR最终运行代码,它为运行的代码创建一个过程,并标记应用域,在该域中放入程序的主线程。

然后CLR提前代码中需要运行的第一部分,把它从中间语言编译成汇编语言,再在合适的程序线程
中执行它,每次执行流到达一个以前没有执行过的新方法时,该方法就会编译为可执行代码。但
这个编译过程只执行一次。该方法编译完之后,其入口地址就被编译好的可执行代码所替换。
代码中只有实际要使用的部分才会被编译,这个过程称为JIT编译。

CLS公共语言规范:                                    C#代码


不允许使用全局方法或变量;                     没有影响


不允许使用某些数据类型;                         如果要CLS兼容,不要使用公共或者受保护类型

                                                                        成员名称必须能在区分大小写的语言中辨识;  

                                                                       不要使用名称只能用大小写来区分的公共的或受保

                                                                        护的成员


异常必须派生于异常基类;                         没有影响


不允许使用指针类型                                   不要使用不安全的代码或指针


不允许使用变量列表参数                            没有影响

属性
[STATHread]
void Main(){}

[Obsolete]
public int method(){}

C#与.NET区别和联系
C#专用于.net运行时。它用于生成面向.NET环境的代码。它本身不是.net的一部分。
C#本身不是.net的一部分,一些特性.net支持,C#不支持;一些C#支持,.net却不支持。

c++代码如何在C#中运行
如果要让C++代码在.net Framework中运行,就要在代码的开头添加:
#using <mscorlib.dll>

C#和Visual C++的比较
1.C#禁用了指针和指针算法;
2.C#删除了预处理的宏。但保留了条件编译和#defined)
3.C#要求在引用变量之前,必须显示声明和初始化变量;
4.C#使用switch...case语句,switch语句中每个case从句都必须有个闭合的break命令;
5.C#删除了全局函数;

使用C#编译器 CSC编译不同的工程类型
/t:exe
/t:winexe
/t:library 生成库
/t:module 生成模块,不带清单(manifest)
模块不能在运行时加载,但是可以和别的文件一起编译成新的文件,/addmodule
如果在编译一个程序时,要应用已经编译好的库文件,那么应该加入/r:xxx.dll

C#中结构:

是值类型的而不是引用类型的。
引用类型:类、接口、委托、数组。不能进行简单的复制。
值类型可以用”=”实现复制;
结构不能使用继承;

封箱和拆箱操作
封箱和拆箱可以把值类型转换成为引用类型、引用类型转换成值类型。
封箱:运行时会为堆上的对象创建一个临时的引用类型”box“
拆箱:把引用转为值类型。
必须使用显式操作。

常看到的/uxxxx表示什么

标识符可以保护Unicode字符。用语法/uXXXX来制定。其中XXXX是Unicode编码。

变量修饰符
internal
new
private
protected
public
readonly
static

internal、private、protected、public用来设置变量的访问级别。
public 变量可以作为它所属类型的一个字段,在任何地方都可以访问;
internal 变量只能在当前程序中被访问;
protected 变量只能在它所属的类型中被访问、或该类型的派生类型中被访问;
private 变量只能在它所属的来信中被方法
protected internal

checked unchecked

用来检查堆栈溢出。
如果在代码中设置了checked,那么检查设置范围内的溢出问题;
如果编译选项中设置了/checked,那么可以检查程序中所有代码的溢出,标记了Unchecked的
除外。

在C#中,整数类型不能隐式地转换为bool类型。

方法修饰符
new  隐藏父类中同名的方法
public  可以在任何地方被访问,包括类的外部
protected 可以在它所属的类的内部被访问,或者派生于该类的类型中被访问
internal 在同一个程序中可以被访问
private  仅在该类的内部可以被访问
static  不能在类的特定实例上执行
virtual  方法可以被派生类重写
abstract 定义了方法名,但是没有提供执行方式
override 重写继承的方法或者抽象的方法
sealed  
extern  方法在外部用另一种语言被执行

ref 引用参数

如果要使函数的参数为引用参数,那么在函数的定义中变量的类型前面加入ref关键字;
而且在调用的时候,在实参前面也要加ref关键字。

名称空间是一种逻辑组合。

Main()入口函数

C#中Main()方法必须是类或结构的静态方法,返回类型为int、void

控制台I/O

输出
使用WriteLine()可以传送多个参数,第一个参数是花括号中包含标记的字符串,在这个花括
号中,要把后续的参数插入到文本中。
每个标记都包含一个基于0的索引,表示列表中参数的序号.
{0}表示列表中第一个参数。

可以为值指定宽度。{n,w},n为参数索引、w是宽度值。

///

常见到VS2005自动生产的代码中有///的地方,现在知道是什么了。

///

C#中还可以从特定的注释自动创建XML格式的说明文档。这些注释都是单行注释的,以三个斜
杠开头(///)。

 

隐藏的value

在定义类的属性的时候,代码通常是:

class capricorn{

                   private name;

                  public string name

                 {

                              get

                                {

                                          return name;

                                 }

                               set

                               {

                                         name = value;

                                }

                 }

}

定义类中属性的时候,在定义SET存取器时没有显示设置参数,它有一个隐式的参数,用名称
value来表示。

C#中继承:每个派生类都只继承一个基类。

方法重写

方法声明为virtual,那么该方法可以在派生类中被重写override。
对于基类和派生类方法的调用:
1.如果方法不是virtual,那么编译器就根据声明的引用类型来判断调用的方法;
2.如果方法是virtual,编译器会生成代码,在运行时检查引用实际上指向哪个实例,然后
确定这个实例属于哪个类,并调用该实例的方法。


方法隐藏
new关键字用来隐藏基类的方法。即同名同参的函数。
方法被隐藏后是根据实例声明的数据类型来判断调用相应数据类型中定义的方法;

如果在子类中要显示调用基类方法,使用base关键字

C#基础知识简单梳理

本文转载自:超级赛亚人的博客http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html C#基础知识简单梳理 ...
  • freeangel_aqs
  • freeangel_aqs
  • 2016年11月22日 16:00
  • 563

HBase基础知识学习

在服务器的开发过程中,数据的存储至关重要,包括任务状态的数据、中间数据,处理的结果信息等。当数据量很大时,这些关系型数据库就必然存在瓶颈(数据库的查询,数据库的字段变更等)。本文基于分布式数据库HBa...
  • mdpmvpmao
  • mdpmvpmao
  • 2015年05月25日 13:29
  • 958

C#操作webservice(经典入门教程及实例)

Web Service基本概念  Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量...
  • baidu_27474941
  • baidu_27474941
  • 2016年09月18日 10:08
  • 1131

C#基础知识总结

学习C#有一段时间了,但是感觉还是很陌生,没有入门儿。还是先来总结一下吧!         简单的画了一张图:        下面再看一下详细的解析吧: C#基础知识之变量命名方...
  • u013034286
  • u013034286
  • 2014年12月28日 19:50
  • 1125

学习笔记:第9章 标准化和知识产权基础知识

1、标准化活动过程,一般包括标准产生(调查、研究、形成草案、批准发布)子过程;标准实施(宣传、普及、监督、咨询)子过程和标准更新(复审、废止或修订)子过程等。 2、根据标准制定的机构和标准使用的范围...
  • dring321
  • dring321
  • 2016年03月15日 00:33
  • 230

数据结构基础知识(1)

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有...
  • happylee6688
  • happylee6688
  • 2013年03月27日 20:30
  • 12834

神经网络基础知识简介

神经网络简介 1 几种常见的神经元 (1)  线性神经元 (2)  二进制神经元 (3)  逻辑神经元(sigmoid 神经元) (4)  随机二进制神经...
  • u010601901
  • u010601901
  • 2015年07月07日 21:52
  • 548

计算机硬件基础知识

计算机硬件系统不管我们有没有发现,在生活中我们处处都在使用着计算机。计算机给我们的生活带来了很多便利与效率,为了更好地使用计算机协助我们的工作学习我们需要对计算机有一个基础的了解。...
  • a5548743
  • a5548743
  • 2017年05月20日 14:19
  • 326

【C#基础】基础总结

刚开始接触C#语言,和之前学过的VB语言相比,还是存在一些相同之处和不同之处的。刚刚看完了一部分视频。视频中都是对基础知识的讲解。老师很逗,讲解的很细致。         1、.net是什么?:.ne...
  • qq_26545305
  • qq_26545305
  • 2015年12月06日 21:20
  • 1073

C# 基础知识 (一).概念与思想篇

这是一篇关于我对C#基础知识的理解,主要是C#的基础概念、与Java的区别,以及面向对象思想的描述,如果将对象比作房子,那么类就是房子的设计图。面向对象思想要适应需求的变化,解决用户的实际需求,在设计...
  • Eastmount
  • Eastmount
  • 2013年08月20日 01:46
  • 2656
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#基础知识(一)
举报原因:
原因补充:

(最多只允许输入30个字)