bool类型
bool a=true;
装箱:将值类型隐式转换为引用类型
首先分配一个对象实例,然后将值类型的值复制到该实例中
int i=10; object obj=i;//将int型的变量i隐式的转换成引用类型,并将其值赋给object类型的变量obj
检查该对象实例是否为给定值类型的一个装了箱的值,将值从实例中复制出来
int i=10; object o=i; int j=(int)o;
ref 引用参数不创建新的位置,引用参数和其基础变量操作的是同一个变量
out 输出参数的值总是与基础变量相同,该函数成员将在这一个存储位置存储新的值,并修改基础变量的值
int F(int j,out int i) { j--; i=j;//在修改i参数的值的同时也修改了i变量的值 return i+j; } ... int i; int sum=F(100,out i);
class Program { int F(ref int i, int j) { i--; return i + j; } static void Main(string[] args) { int i = 10; Program p = new Program(); int sum = p.F(ref i, 10); Console.WriteLine("sum的值是:" + sum); Console.ReadLine(); } }
类型测试运算符 is as
is运算符用来测定运行时类型是否与给定类型兼容,结果为bool
int i=100; bool j=i is object;//判断变脸i是否可以转换成object类型as运算符是将一个值显示的转换为一个给定的引用类型,如果转换失败,则返回null
int i=10; object j=i as object;//将i由int类型转换成object类型
int [] arr={2,3,4,5}; int sum=0; foreach(int i in arr)//可以;理解为i是第几个数据 { sum+=i; }
在同一个命名空间中,各个类可以互相调用,如果在不同的命名空间中,就需要在调用的类之前添加对应的命名空间名称加点号
namespace Test { class demo1{ } class demo2 { } class demo3 { static void Main(string[] args) { Test.demo1 d1=new Test.demo1(); Test.demo2 d2=new Test.demo2(); } } }
在程序中,可能会使用与系统封装的类相同的的名称命名的一个类,使用双冒号可以在指定的命名空间中寻找1标示符
M::test1 t1=new M::test1();//使用::限定为M命名空间中的test1 L::test1 t1=new L:;test1();//使用::限定为M命名空间中的test1
seald
seald类,密封类不能作为基类,也不能作为抽象类,因此不能从密封类派生新的类
seald class Classs1 { public void Fun() { } }
虚方法可以由派生类实现(重写方法)
... public class Program { public virtual void P1() { Console.WriteLine("program p1"); } } public class Test:Program { public override void P1() { Console.WriteLine("Test.p1"); } } ...
密封方法
使用sealed修饰符,可以防止派生类重写该方法
public class Test { public sealed override void p { Console.WriteLine("Test"); } }
C#特有机制
... public class Program { private string name; publid string Name { get{return name;} set{name=value;} } static void Main() { Program p=new Program(); p.Name="hxk"; string name=p.Name; console.WriteLine(name); } }
申明索引器时,需要使用this关键字
public class Program { private string[] list;//string类型的数组 public string this[int index]//申明索引器,索引为int类型 { get{ return list[index];}//获取list数组中的元素 set { if(index>-1&&index<list.Length) list[index]=value;//设置list数组元素的值 } } public Program(int count)//构造函数 { list=new string[count]; for(int i=0;i<count;i++) { list[i]=i.toString(); } } static void Main(string[] args) { int count=100; Program p=new Program(count); for(int i=0;i<count;i++) { //通过索引器访问list数组的元素 Console.WriteLine(p[i]+""); if(i%10==0) Console.WriteLine(); } } }
析构函数是手动释放类的实例占用的资源,并销毁类的实例
public class Program { ~Program() { Console.WriteLine("销毁类的实例"); } }
结构
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Chapter9 { class Program { //声明结构S public struct S { int i; public S(int i) { this.i = i; } public void F() { Console.WriteLine("今天是" + i + "号。"); } } static void Main(string[] args) { S s = new S(21); s.F(); Console.ReadLine(); } } }
动态数组
namespace Chapter10 { class Program { static void Main(string[] args) { ArrayList l = new ArrayList(); //声明一个动态数组l l.Add("今天是2012年12月11日"); l.Add(2012); l.Add(12); l.Add(11); foreach (object obj in l) { Console.WriteLine(obj); //将动态数组各元素打印输出 } Console.ReadLine(); } } }
原文地址:http://blog.csdn.net/u013470102/article/details/44499239