2012年6月26日

C#定义属性-只读属性

摘要: 只有get访问器的属性为只读属性,此属性不定义set访问器。语法如下:<访问修饰符> 数据类型 属性名{get{}}定义了只读属性,就只能通过该属性取值,而不能赋值。private int _age;public int Age{get{ return _age;} 阅读全文

posted @ 2012-06-26 13:24 流星落 阅读(1462) 评论(0) 推荐(0) 编辑

C#属性简介

摘要: 我们知道,类成员包括变量和方法。如果希望其他类能够访问成员变量的值,就必须定义成公有的,而将变量设为公有public,那这个成员变量的就可以被任意访问(包括修改,读取),这样不利于数据安全。那怎么办呢?C#通过属性特性读取和写入字段(成员变量),而不直接直接读取和写入,以此来提供对类中字段的保护。属性可用于类内部封装字段。属性是C#面向对象技术中封装性的体现。注意:字段就是类的成员变量,为配合属性而这样称呼的。属性和字段的区别: 属性是逻辑字段;属性是字段的扩展,源于字段;属性并不占用实际的内存,字段占内存位置及空间。 属性可以被其它类访问,而大部分字段不能直接访问。属性可以对接收的数据范围作 阅读全文

posted @ 2012-06-26 13:23 流星落 阅读(212) 评论(0) 推荐(0) 编辑

C#定义属性-读写属性

摘要: 通常属性包括get{}访问器和set{}访问器。get{}访问器用来返回相应的私有字段的值,用return来返回。set{}访问器用来设定相应字段的值,相当于一个隐含的输入参数,采用value来赋值。读写属性:读写属性是同时包括get访问器和set访问器的属性,get访问器定义对数据访问,set访问器定义对数据的读取。语法如下:<访问修饰符> 数据类型 属性名{get{}set{}}private string _name;public string Name{get{ return _name;}set{ _name = value;}通俗的讲,具有读写属性的字段,可以通过属性赋 阅读全文

posted @ 2012-06-26 13:23 流星落 阅读(921) 评论(0) 推荐(0) 编辑

C#中this关键字的使用

摘要: 保留字this仅限于在构造函数、类的方法和类的实例中使用,它有以下含义:●在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用。●在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。●在结构的构造函数中出现的this作为一个变量类型,它表示对正在构造的结构的引用。●在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。除此之外,在其它地方使用this保留字都是不合法的。比如在一个AAA类里有一个aaa的变量在这个AAA类中调用这个aaa变量就可以用this.aaa如果是在别的类中就要实例化一个对象来调用这个变量AAA a= 阅读全文

posted @ 2012-06-26 13:22 流星落 阅读(202) 评论(0) 推荐(0) 编辑

C#中的结构体要使用new来实例化吗?

摘要: 声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。在结构中初始化实例字段也是错误的。如果使用 new 运算符创建结构对象,则会创建该结构对象,并调用适当的构造函数。与类不同,结构的实例化可以不使用 new 运算符。如果不使用 new,则在初始化所有字段之前,字段都保持未赋值状态且对象不可用。结构类型使用new不会分配托管堆分配内存而是调用构造函数初始化字段。结构的构造函数要么是有参数的,不可能是无参数,应为无参数是系统自己隐式添加的,就算有另外的构造函数,如果你显示的声明一个无参数的构造函数在结构里,将导致编译错误。结构体如果不用new初始化,也可 阅读全文

posted @ 2012-06-26 13:20 流星落 阅读(2194) 评论(0) 推荐(0) 编辑

C#数据类型-结构类型

摘要: 有时我们可能对同一事物使用多个不同的变量来描述,如果将其分开来,显得不够灵活。结构类型很好的解决了这个问题,它把多个不同的变量组织在一起。结构和类有很多相同的地方,结构可以看成一个轻量的类。结构使用struct关键字定义。其定义方法如下:struct 结构名称 { 成员声明列表; }成员可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等。每个成员在声明的时候都采用如下的格式:访问修饰符 类型 名称;using System;struct Teacher{public string Name; // 老师姓名public uint Age; // 老师年龄public stri 阅读全文

posted @ 2012-06-26 13:19 流星落 阅读(616) 评论(0) 推荐(0) 编辑

C#构造函数的重载

摘要: C#中的构造函数也可以应用方法重载。C#中有默认构造函数,也可以定义带参数的构造函数。构造函数必须与类同名,并且不能有返回值。所以C#构造函数重载相当于不同数量的参数方法重载。using System;class Animal{public string _name;public string _color;public int _speed;public Animal(){ this._speed = 30;}public Animal(string name, string color){ this._name = name; this._color = color;}public Ani 阅读全文

posted @ 2012-06-26 13:18 流星落 阅读(1062) 评论(0) 推荐(1) 编辑

C#方法参数个数和类型相同,名称不同,可以实现重载吗

摘要: 比如说:(1)public void add(int i){}(2)public void add(int i,int j){}(3)public void add(int a){}(4)public void add(double i,int j){}1和2算重载因为那个数不同。2和4也算重载因为类型不同。那1和3算不算重载?他们的名字不同??这不能通过编译。因为1和3本质是一样的两个方法,参数的名称本质只是在方法内部的一个变量的标识,重载只与参数类型和参数个数有关。如果有多个参数,那么如果这些参数的类型不同就要考虑参数位置了。例如:public void print(int a,Strin 阅读全文

posted @ 2012-06-26 13:17 流星落 阅读(960) 评论(0) 推荐(0) 编辑

C#方法重载-基于不同类型的参数的方法重载

摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication7{ class Test { static void Main(string[] args) { Test ts = new Test(); Console.WriteLine("两个数最大的数是:{0}",ts.MaxNum(12, 33)); Console.WriteLine("三个数最大的数是:{0}", ts.MaxNum(1 阅读全文

posted @ 2012-06-26 13:16 流星落 阅读(450) 评论(0) 推荐(0) 编辑

C#只能靠参数而不能靠返回值类型的不同来区分方法重载

摘要: 重载必须要用参数来区分,传入不同参数,可以实现重载。可以这样理解,你调用一个方法,如果有多个方法同名,系统必须要知道到底你要调用哪一个,参数可以帮助系统在方法入口处得到答案,他根据你给的参数就知道该将哪个方法的入口调入栈中。如果只有返回值的不同,很多情况系统是不可能得到有效的判断条件的。比如:string method(); int method();上面两个方法,第一个返回字符串类型值,第二个的返回值是整数类型。如果你这样调用:method();在这种情况下,编译器和程序员都不知道哪个method方法被调用。 阅读全文

posted @ 2012-06-26 13:16 流星落 阅读(837) 评论(0) 推荐(0) 编辑

C#方法重载-基于不同数量的参数的方法重载

摘要: 在日常生活中,有些行为具有相同的名称,但是可以执行不同的操作,我们经常去商场买东西,虽然都是购物,每次执行这个任务时购买的物品,付款多少,购买过程都是不同的,所以虽然任务相同,但每次处理的数据是不同的。在C#中用重载方法执行类似功能。方法重载的定义:多个方法具有相的的名称,但是对不同数据执行相似的过程。C#中的方法重载包括基于不同数量的参数方法重载和基于不同类型的参数方法重载。1、基于不同数量的参数的方法重载using System;class Class1{int numberone(int num1, int num2){ Console.WriteLine("{0}和{1}中较 阅读全文

posted @ 2012-06-26 13:14 流星落 阅读(1487) 评论(0) 推荐(0) 编辑

C#静态方法不能使用this关键字

摘要: 实例方法比静态方法多传递一个隐含的指针参数,该指针指向该方法所从属的已被实例化的对象。这一区别的外在表现为实例方法内可使用this关键字代表所从属的实例对象,而静态方法不可使用this因为静态方法不针对任何实例对象。实例对象调用静态方法会因参数中多出一个指向自己的指针(this)而发生错误。 定义静态方法只需加注static关键字即可。静态方法独立于对象实例之外,与对象是否已被实例化无关,调用静态方法要用类定义的名称而不能用实例名称如: class a { ... public static void b(){}//静态方法 public void d(){}//实例方法 } a c = ne 阅读全文

posted @ 2012-06-26 13:12 流星落 阅读(840) 评论(0) 推荐(0) 编辑

c#静态方法不可以直接调用实例方法

摘要: 静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例。非静态方法可以访问类中的任何成员,而静态只能访问类中的静态成员。看这个例子:class A{int x;static int y;static int F(){x=1; //错误,不允许访问y=2; //正确,允许访问}在这个类定义中,静态方法F()可以访问类中静态成员y,但不能访问非静态成员x。这是因为,x作为非静态成员,在类的每个实例中都占有一个存储(或者说具有一个副本),而静态方法是类所共享的,它无法判断出当前的x是属于哪个类的实例,所以不知道应该到内存的哪个地址去读取当前x的值。而y是静态成员,所有类的实例都公用一个副本,静态 阅读全文

posted @ 2012-06-26 13:11 流星落 阅读(1228) 评论(0) 推荐(0) 编辑

C#静态方法

摘要: 静态方法与静态变量一样,属于类本身,而不属于那个类的一个对象。要想调用一个被定义为static的方法,必须在它前面加上这个类的名称。其中static关键字即表示静态的。声明静态方法的语法如下:<访问修饰符> static 返回类型 方法名(参数列表){//方法体}静态方法与实例方法唯一不同的,就是静态方法在返回类型前加static关键字。静态方法的调用语法如下:类名.静态方法名(参数值);我们在使用时要注意:静态方法只能访问类的静态成员,不能访问类的非静态成员;非静态方法可以访问类的静态成员,也可以访问类的非静态成员;静态方法不能使用实例来调用,只能使用类名来调用。using Sy 阅读全文

posted @ 2012-06-26 13:06 流星落 阅读(547) 评论(0) 推荐(0) 编辑

C#静态变量

摘要: 在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了“信息隐藏”的作用。但有些时候,这样做却不是个明智的选择。假设我们要定义一个图书类,要求该类能保存图书的数量,即每增加一本图书(定义一个实例),图书的数量应该加1。如果没有静态变量,我们需要将图书的数量保存在每本图书(实例)里,然而,这样的变量要在不同图书(实例)里重复存储,图书(实例)数量少的话,我们还能接受,如果图书(实例)数量较多的话,比如成千上万,我们无法想象这要造成多少资源(如内存、磁盘空间)的浪费,更让人无法忍受的是:因为图书(实例)的数量要保存在每本图书(实例)里,该值肯定是不同的。要 阅读全文

posted @ 2012-06-26 13:04 流星落 阅读(499) 评论(0) 推荐(0) 编辑

C#类方法中使用数组参数params关键字的作用

摘要: 参数数组(params)关键字可以指定在参数数目可变处采用参数的方法参数。在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。先定义一个带有参数数组的方法:public void UseParams(params int[] list) { for (int i = 0 ; i < list.Length; i++) { Console.Write(list[i] + " "); } Console.WriteLine(); }可通过以下两个方法调用:① UseParams(1,2,3)② int[] myar 阅读全文

posted @ 2012-06-26 13:03 流星落 阅读(340) 评论(0) 推荐(0) 编辑

C#方法参数传递-同时使用ref和out关键字

摘要: 在方法参数传递中,可以同时使用ref和out关键字,但是要注意ref和out参数传递的不同。using System;class Program{static void Main(){ Program obj = new Program(); int score = 55; //声明原来分数 int refscore, outscore; //声明两个变量 obj.ChangeScore(score, ref refscore, out outscore); Console.WriteLine("您原来的分数是{0},调整后的分数为{1},加平时表现分后{2}", scor 阅读全文

posted @ 2012-06-26 13:02 流星落 阅读(3180) 评论(0) 推荐(0) 编辑

C#方法参数传递-输出参数out关键字

摘要: out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化,out关键字不要求调用代码前对传递的参数进行初始化,也可以实现引用传递。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。采用这种方法调用代码时,就可看到修改后的值。输出参数(Out Parameter)格式:方法名称(out 参数类型 参数名称[,out 参数类型 参数名称])using System;class OutExample{ static void Method(out int i) { i = 44; } static void Ma 阅读全文

posted @ 2012-06-26 13:02 流星落 阅读(661) 评论(0) 推荐(0) 编辑

C#方法参数传递-引用参数ref关键字

摘要: 引用传递好比你把文件在网络上的地址告诉他人,他人通过网络访问你计算机的文件,他可以对文件进行修改并保存,此时,文件的内容就会发生变化。引用传递在方法调用之后,可以保留参数值的修改。要实现引用传递,C#通过ref关键字和out关键字来实现。引用参数(Reference Parameter )格式:方法名称(ref 参数类型 参数名称[,ref 参数类型 参数名称])ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。using System;class Prog 阅读全文

posted @ 2012-06-26 13:01 流星落 阅读(990) 评论(0) 推荐(0) 编辑

C#方法参数传递-值传递

摘要: c#常用的参数传递有两种方式:值传递和引用传递。什么是值传递呢?就是把参数值放在方法中,在方法中对参数值做了修改,但是在方法调用之后,参数值还是原来的值。值传递好比把文件复制一份,通过网络传给别人,然后他可以在他的计算机上对文件做各种修改,修改会保存下来,但是你的计算机上的文件不会发生任何变化。值传递参数(Value Parameter )格式:方法名称(参数类型 参数名称[,参数类型 参数名称])using System;class Program{static void Main(string[]args){ int num1 = 4; int num2 = 8; Console.Writ 阅读全文

posted @ 2012-06-26 13:00 流星落 阅读(708) 评论(0) 推荐(0) 编辑

导航