??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品日韩在线观看,亚洲一区二区毛片,亚洲欧美综合http://www.aygfsteel.com/bacoo/category/29645.html鉴证我学习Java的历E!zh-cnMon, 07 Apr 2008 05:22:36 GMTMon, 07 Apr 2008 05:22:36 GMT60.NET零散W记[4]http://www.aygfsteel.com/bacoo/archive/2008/04/07/191169.htmlbacoobacooMon, 07 Apr 2008 01:44:00 GMThttp://www.aygfsteel.com/bacoo/archive/2008/04/07/191169.htmlhttp://www.aygfsteel.com/bacoo/comments/191169.htmlhttp://www.aygfsteel.com/bacoo/archive/2008/04/07/191169.html#Feedback0http://www.aygfsteel.com/bacoo/comments/commentRss/191169.htmlhttp://www.aygfsteel.com/bacoo/services/trackbacks/191169.html创徏只读属性,可以只有getterҎ而没有setterҎ卛_?/p>

代表主要有两个用途,一个是回调Q另一个是事g处理。对于回调,代表像是用typedef定义了一个指向函数的指针。代表需要用new来生,代表也可以在形式上类gc那P来定义个该代表的对象Q也可以作ؓ对象作ؓ函数参数q行传递?/p>

nested loop的意思是嵌套循环Q经常看到nestedq个词,但一直不知道啥意思,现在ȝ知道了?/p>

U程部分Q?br /> 在System.Threading名空间中定义Q?br /> 创徏U程不必要利用到一个ThreadStart的代表,该代表来指定一个方法,q一Ҏ是U程执行的函CQ?br /> 启动U程用StartQ?br /> 休眠U程用SleepQ?br /> ?NET中,U程可以越q程的界限,讉K其他q程中的U程Q?br /> U程挂v有Sleep(0)和Suspend两种ҎQ第一U方法直到其他线E调用该U程的Interrupt来中断这U挂L态,W二U方法会直到其他U程调用该线E的Resume才能恢复挂v的状态;
销毁线E用Abort?br /> 一个典型例子:
class A
{
 public static void fun()
 {
  Console.WriteLine("Another Thread is running!");
 }
 
 public static void main()
 {
  ThreadStart t=new ThreadStart(fun);
  Console.WriteLine("Main Thread is running!");
  
  Thread thread=new Thread(t);
  thread.Start();
  
  Console.WriteLine("...");
 }
}

.NET中用MonitorcdCcM于信号量的机制来对代码块q行串行化的讉K?br /> Monitor.Enter(this);
代码?br /> Monitor.Exit(this);

C#中用lock实现了类似Monitor的功能,使用Ҏ如下Q?br /> lock(this)
{
 代码?br /> }

可以通过Mutex来实现同步,使用Ҏ如下Q?br /> 在类中定义一个成员变量:Mutex mutex=new Mutex(false);//q里用false表示此刻q不希望锁定?br /> 在用时Q可以这P
mutex.WaitOne();
代码?br /> mutex.Close();



bacoo 2008-04-07 09:44 发表评论
]]>
.NET零散W记[3]http://www.aygfsteel.com/bacoo/archive/2008/03/26/188871.htmlbacoobacooWed, 26 Mar 2008 14:06:00 GMThttp://www.aygfsteel.com/bacoo/archive/2008/03/26/188871.htmlhttp://www.aygfsteel.com/bacoo/comments/188871.htmlhttp://www.aygfsteel.com/bacoo/archive/2008/03/26/188871.html#Feedback0http://www.aygfsteel.com/bacoo/comments/commentRss/188871.htmlhttp://www.aygfsteel.com/bacoo/services/trackbacks/188871.html.NET中所有的基类都是System.Object?/p>

C#中用is代替Java中instanceof关键字?/p>

C#中typeof和Type.GetType函数{同?/p>

C#中的Ҏ,首先它是一个派生于System.Attribute的类Q而且在类命名的时候,通常都以Attributel尾。定义一个特性就是普通的定义一个类。用特性时Q用一对中括号包含一个该Ҏ定义的实例Q然后放在方法前、类前、字D前卛_。如Q?br /> 我们定义了一个RegistryKeyAttribute的特性,然后使用时就可以Q?br /> [RegistryKey(34,"Foo")]//注意在引用时可以省略AttributeQ系l会为其自动d?br /> public int foo;
然后可以检该cȝ该属性是否具有RegistryKeyAttributeҎ了?br /> C#中用特性主要是Zd注释Qƈ把注释的信息捆绑到类上,在运行的时候就可以通过反射的机制来得到q些注释信息了,q点可以cL于Java中的Annotation?/p>

C#中,可以使用名字隐藏(name hiding)技术,该技术主要应用于当一个类实现了某个接口时Q如果我们用该类的一个实例来“?#8221;一下的话,那么应该可以看到被实现的q个接口中的所有内容,Z不让外界看到接口中的内容Q那么可以用该技术。该技术用的具体Ҏ是在实现接口中的Ҏ时去掉public关键字,改用接口名字代替。例如:本来应该是public void run(){}现在改ؓvoid Runnable.run(){}使用q种办法可以解决“同时实现多个接口Ӟ当不同接口中存在同样的函数时Q生的名字模糊问题”Q比如A和B接口都有funҎQ那么在一个类同时实现A和B接口Ӟ可以q样写代码:void A.fun(){...}
void B.fun(){...}而在使用Ӟ可以q样((A)cȝ一个对?.fun();q样调用的就是对接口A中funҎ的实现?/p>

在C#中可以定义基于普通数值类型的enumcdQ例?br /> enum Test : int
{
 One=1;
 Two,
 Three
};

C#中的switch语句中不允许“贯行<fall-through>”Q即当一个case情况满Ӟ如果该case没有break语句Q那么就会自动执行下一个case对应的语句,在C#中把贯行l取消了Q而在java中还是保留了贯行的?/p>

C#中也可以定义q算W重载,对于普通运符重蝲Ӟ相对于一般的函数定义Q我们只需要把“函数?#8221;替换?#8220;operator<某运符>”卛_Q例如:public static String operator+ (String s1,String s2)。比较特D的是定义强制类型{换运符Q它的定义Ş式如下:
public static implicit operator conv-type-out (conv-type-in operand)
public static explicit operator conv-type-out (conv-type-in operand)
q里的implicit?#8220;不需要客L昑ּ的给出,它会自动q行”Qexplicit指的?#8220;客户端必L式的指出需要{换的cd”。例如:
public static implicit operator float (String s)
最后,q需要提醒注意的是,对于q算W重载,必须都定义ؓpublic staticQ这一点必M证?/p>

bacoo 2008-03-26 22:06 发表评论
]]>
.NET零散W记[2]http://www.aygfsteel.com/bacoo/archive/2008/02/28/182787.htmlbacoobacooThu, 28 Feb 2008 12:55:00 GMThttp://www.aygfsteel.com/bacoo/archive/2008/02/28/182787.htmlhttp://www.aygfsteel.com/bacoo/comments/182787.htmlhttp://www.aygfsteel.com/bacoo/archive/2008/02/28/182787.html#Feedback0http://www.aygfsteel.com/bacoo/comments/commentRss/182787.htmlhttp://www.aygfsteel.com/bacoo/services/trackbacks/182787.html可以不用强制cd转换Q用as来替代,q样做的好处是:如果转换是非法的Q不会生异常,只是产生一个gؓnull的{换结果。比如:Person p=new Person();
Student s= p as Student;
Console.WriteLine("p={0}", c==null ? "null" : c.ToString());

cȝ成员包括Q字D;ҎQ属性(字段Q;帔RQ烦引器Q智能数l)Q事Ӟ操作W重载?/p>

C#中对于类中定义的字段Q如果前面不加限定符Q则默认为private?/p>

C#中和Java一P对于字段或方法的定义Q都是在每一个前面都要加限定W!

C#中多了一个internal限定W,表示该成员只在当前编译单元内可见Q根据代码所在的位置Q访问限定符“internal”代表?#8220;public”?#8220;protected”的访问性组合?/p>

C#中调用基cȝ构造函数用base而不是superQ而且调用位置也不同于JavaQ还是承了C++的传l写法,如:
public B(int x) : base(x)

C#中readonly关键字和Java中的final差不多,都是定义帔R用的Q但是它定义的常量可以在构造函数内初始化,而const定义的常量只能在定义时初始化。如果再用static限定Q那么也可以在static块中初始化?/p>

C#中用限定W?#8220;sealed”来禁止一个类z子类Q和Java中的final关键字修C个类时的作用一栗?/p>

C#中用ref和out两个关键字来使得函数参数可以带回q回倹{ref和C++中用“&”定义的引用一P如:
public void change(ref int x,ref int y){
 int tmp=x;
 x=y;
 y=tmp;
}
在调用时也得change(ref x,ref y);但需要注意的是,x和yq两个变量必被事先初始化?/p>

使用outӞ׃必初始化了,使用Ҏ同ref。关键是要区别什么时候用ref什么时候用out。其实刚才在上面丄例子Q一定要用refQ因个函数在处理旉要用到参数已有的值来交换Q如果没有初始|那还交换个什么劲儿啊Q而如果我们只是希望通过函数调用带回来一些信息给我们使用Q也是惛_现多q回|仅仅Z此目的且函数处理中不必利用参数的初始|那么应该用out?/p>

C#中用“params”关键字来使得Ҏ的参C数可变,相当于在Java里定义函数时使用...效果一栗如Q?br /> public int sum(params int[] x)。但必须定义为数l类型。而在Java中这样就行:public int sum(int ... x)

C#中函数覆盖时Q必ȝ关键字new来修饎ͼ否则A.max()和B.max()各调用各自的Q谁也不q涉谁(q里Bz自AQ?/p>

C#中要实现多态,必须在基cd义函数时用关键字virtual修饰Q在子类中覆盖函数时用override修饰。而且被virtual修饰的基cd数还不能是private的,因ؓ它对子类不可见?/p>

C#中定义抽象类或抽象方法,也都是用abstract关键字声明,但是在子cd现时必须用override关键字修饰要实现的抽象函数?/p>

C#中可以用foreach(int tmp in x)来实现类似Java中for(int tmp : x)的功能?/p>

C#中用get和set关键字来得到、设|类的属性,q期间还会用到关键字value。D个例子如下:
protected string zipCode;
public string ZipCode
{
 get
 {
  return zipCode;
 }
 set
 {
  zipCode=value;
 }
}
q里ZipCode是一个属性名Q可以随便v名字Q但是ؓ了和字段相匹配,我们l它起名?#8220;ZipCode”。在使用时就得这P
Address addr=new Address();
addr.ZipCode="55555";
string zip=addr.ZipCode;

C#中不能够在类中定义对象的时候就用new为其赋|Q!Q!

C#中定义多l数l用int [, ,] x;多维数组得到某一l的长度用x.GetLength(W几l?;查询多维数组的维数用x.Rank;

C#中用int [][] x;来定义二l的“锯状数l?#8221;Q这同Java是一LQ这U锯齿状数组当然包括常规的二l数l了Q但是在Java中ƈ没有对它们进行区分?/p>

================索引?===============
单说来,所谓烦引器是一cȝD的属性,通过它们你就可以像引用数l一样引用自qcR?
声明Ҏ如下(与属性相?Q?
//修饰W cd名称 this [cd名称 参数名]
public type this [int index]
{
get
{
//...
}
set
{
//...
}
}
用例子简单说明:
using System.Collections;

static void Main(string[] args)
{
//调用IntBits.IntBitsҎQ意为将63赋给bits
IntBits bits = new IntBits(63);
//获得索引6的bool|此时 bits[6]调用烦引器"public bool this[int index]"中的GetQgؓTrue
bool peek = bits[6];
Console.WriteLine("bits[6] Value: {0}",peek);
bits[0] = true;
Console.WriteLine();

Console.ReadKey();
}

struct IntBits
{
private int bits;
public IntBits(int initialBitValue)
{
bits = initialBitValue;
Console.WriteLine(bits);
}
//定义索引?
//索引器的“属性名”是thisQ意思是回引cȝ当前实例Q参数列表包含在Ҏ可非括号之内?
public bool this [int index]
{
get
{
return true;
}
set
{
if (value)
{
bits = 100;
}
}
}

备注:

所有烦引器都用this关键词来取代Ҏ名。Class或Struct只允许定义一个烦引器Q而且L命名为this?

索引器允许类或结构的实例按照与数l相同的方式q行索引。烦引器cM于属性,不同之处在于它们的访问器采用参数?

get 讉K器返回倹{set 讉K器分配倹{?

this 关键字用于定义烦引器?

value 关键字用于定义由 set 索引器分配的倹{?

索引器不必根据整数D行烦引,由您军_如何定义特定的查找机制?

索引器可被重载?

索引器可以有多个形参Q例如当讉K二维数组时?

索引器可以用百数g标,而数l只能用整C标:如下列定义一个String下标的烦引器
public int this [string name] {...}

属性和索引?

属性和索引器之间有好些差别Q?

cȝ每一个属性都必须拥有唯一的名Uͼ而类里定义的每一个烦引器都必L有唯一的签名(signatureQ或者参数列表(q样可以实现烦引器重蝲Q?

属性可以是staticQ静态的Q而烦引器则必L实例成员?

为烦引器定义的访问函数可以访问传递给索引器的参数Q而属性访问函数则没有参数?/p>

bacoo 2008-02-28 20:55 发表评论
]]>
.NET零散W记http://www.aygfsteel.com/bacoo/archive/2008/02/25/182040.htmlbacoobacooMon, 25 Feb 2008 08:54:00 GMThttp://www.aygfsteel.com/bacoo/archive/2008/02/25/182040.htmlhttp://www.aygfsteel.com/bacoo/comments/182040.htmlhttp://www.aygfsteel.com/bacoo/archive/2008/02/25/182040.html#Feedback0http://www.aygfsteel.com/bacoo/comments/commentRss/182040.htmlhttp://www.aygfsteel.com/bacoo/services/trackbacks/182040.html.NET骨架代码Q?br /> using <namespace>
namespace <your optional namespace>
class <your class>
{
 public static void Main(){
 }
}

不能用using指定c,但可以ؓcM用别名:
using alias=class

C#命名规范Q?br /> Ҏ名用第一个字W大写的Pascal规则Q?br /> 变量名用第一个字W小写的camel规则?/p>

公共cdpȝCTS(Common Type System)是在.NET中定义的cd标准Q而且q支持用戯定义新的cd来进行类型的扩展。Q何以.NET为^台的语言都必d立该语言的数据类型到CTScd之间的映。所?NET语言׃nq一cdpȝQ实现各U语a之间的无~的互操作?/p>

装箱(boxing)与开?unboxing)Q?br /> 装箱是数值类型{换ؓ引用cdQ此q程不需要显C{换?br /> 如int foo=42;object bar=foo;
开就是将引用cd转换为数值类型,此过E必LC{换?br /> 如int foo2=(int)bar;
通过装箱与开׃得C#中的一切开h都是对象Q但同时又避免了当所有一切都是真正的对象时对pȝ要求q高?/p>

引用cd都是在堆上分配的?/p>

⑴浅复制Q浅克隆Q?br /> 被复制对象的所有变量都含有与原来的对象相同的|而所有的对其他对象的引用仍然指向原来的对象。换a之,复制仅仅复制所考虑的对象,而不复制它所引用的对象。另解:复Ӟ两个或多个相同类型的指针指向相同的内存,也就是它们指向相同的数据Q如果改变其中之一Q其它的也将改变?br /> ⑉|复制Q深克隆Q?br /> 被复制对象的所有变量都含有与原来的对象相同的|除去那些引用其他对象的变量。那些引用其他对象的变量指向被复制q的新对象,而不再是原有的那些被引用的对象。换a之,深复制把要复制的对象所引用的对象都复制了一遍。另解:深复Ӟ一个指针所指的数据复制l另外一个指针所指的内存Q两个指针有自己的数据,如果改变一个,另外的不受媄响?/p>

bacoo 2008-02-25 16:54 发表评论
]]>
.NET概述http://www.aygfsteel.com/bacoo/archive/2008/02/24/181801.htmlbacoobacooSun, 24 Feb 2008 10:51:00 GMThttp://www.aygfsteel.com/bacoo/archive/2008/02/24/181801.htmlhttp://www.aygfsteel.com/bacoo/comments/181801.htmlhttp://www.aygfsteel.com/bacoo/archive/2008/02/24/181801.html#Feedback0http://www.aygfsteel.com/bacoo/comments/commentRss/181801.htmlhttp://www.aygfsteel.com/bacoo/services/trackbacks/181801.html.NETҎ包括四部分,作ؓ开发h员,提到.NETӞ通常指得是该Ҏ的第四部分,?#8220;.NET基础l构”Q这一部分又包?#8220;.NET框架、MS Visual Studio .NET?NET企业服务器、MS Windows .NET”四小部分。作为开发h员,最兛_的当然是“.NET框架”了,下面我们来着重说?NET框架?/p>

.NET框架由基cdBCL(Basic Class Library)和公paq行环境CLR(Common Language Runtime)两部分组成。BCL相当于MFCQ来提供装好的cdQ该cd提供了从文gI/O、数据库到XML、SOAP{各个方面的支持QCLR可以cLJVMQ来提供q行的^台?/p>

?NET框架中,出现了许多新的特性和功能Q这些功能都是通过~译器对能够体现q些功能和特性的代码的编译来完成的,众所周知?NET兼容了很多种语言Q但?NET~译器小lƈ没有为每U语a都设计了_完整的对新特性的~译支持Q他们只实现那些他们觉得对用h有用的功能。但是,C#提供了访问几乎所?NET框架功能的接口?/p>

C#是一U与CLS标准兼容的语aQ用C#~写出来的代码,l过~译Q生成MSIL中间代码写入EXE文gQ在q行时由JITerMSIL代码~译为CPU识别的机器码Q进而执行程序?br />



bacoo 2008-02-24 18:51 发表评论
]]>
վ֩ģ壺 ۩| | ̨| | Ϫ| ٳ| | ̶| | ʲ| ƽ| | | | | ӯ| ʩ| ޶| | ҳ| ػ| ˮ| | ͨ| | | ֶ| | üɽ| ƽ| ʯ| | ׿| | ͬ| °Ͷ| | | ƽ| | |