C#之初级篇

来源:互联网 发布:银行软件开发收入 编辑:程序博客网 时间:2024/05/22 01:14

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类型

foreach语句

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命名空间中的test1L::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();        }    }}




0 0