欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c#入门学习

程序员文章站 2022-07-09 23:25:47
...

      因为要学习Unity3d,虚拟现实编程 但是因为本科没有接触过c#开发,毕业设计虽然用unity3d开发了一个多人坦克大战,但是也是需要什么功能 直接在网上搜相关例子,没有系统学习过c#,最近还没有完全进入新项目 抽空稍微学习一下c#开发

1,输入输出

       输出:Console.WriteLine("hello");

       例,Console.WriteLine("姓名:{0},年龄:{1}",name,age)//将第二个参数变量name变为字符串填到{0}位置,将第三个参数变量age变为字符串填到{1}位置,将第一个参数表示的字符串输出。

       输入:string s = Console.ReadLine();//会等待直到用户按下回车,一次读入一行

       Console.ReadKey();//则是等待用户按下任意键,一次读入一个字符。

       当编写控制台程序时,为了防止闪退 可以在程序最后加一行Console.ReadKey();

       程序执行完后,按下任意键才推出

       c#输入主要是都是以string类型 可以读取数据后 进行强制数据转换 获取所要的数据类型

       注:console.write()与console.writeLine()打印字符串  结构第一个是输出不换行,第二个换行

2,类

        类,它的主要思想是将数据(数据成员)及处理这些数据的相应方法(函数成员)封装到类中,类的实例则称为对象。

        类可以认为是对结构的扩充,它和C中的结构最大的不同是:类中不但可以包括数据,还包括处理这些数据的函数。类是对数据和处理数据的方法(函数)的封装。类是对某一类具有相同特性和行为的事物的描述。例如,定义一个描述个人情况的类Pig:

 class Pig//类的定义,class是保留字,表示定义一个类,Pig是类名
    {
        private string name ;//类的数据成员声明
        private int age;//private表示私有数据成员


        public Pig(string Name, int Age)//构造函数,函数名和类同名,无返回值
        {
            name = Name;
            age = Age;
        }


        public void Show()//类的方法(函数)声明,显示姓名和年龄
        {
            Console.WriteLine("姓名:{0},年龄:{1}", name, age);
        }


        public void SetName(string PersonName)//修改姓名的方法(函数)
        {
            name = PersonName;
        }


        public void SetAge(int PersonAge)
        {
            age = PersonAge;
        }
        
        public Pig()//类的构造函数重载
        {
            name = "Perch";
            age = 1;
        }
    }

         定义好后 可以在别的类中通过构造函数定义Pig类的实例,对其属性或函数进行调用,一定要注意定义的是private还是public,私有数据不可被访问,调用例子如下:

  class Program
    {
        static void Main(string[] args)
        {
            Pig pig1 = new Pig("Peppa", 2);
            pig1.Show();
            pig1.SetName("George");
            pig1.SetAge(1);
            pig1.Show();
            pig1 = new Pig();
            pig1.Show();
            Console.ReadKey();
        }
    }
}
3,结构体

      结构体和类一样,可以声明构造函数、数据成员、方法、属性等。结构和类的最根本的区别是结构是值类型,类是引用类型。和类不同,结构不能从另外一个结构或者类派生,本身也不能被继承,因此不能定义抽象结构,结构成员也不能被访问权限控制字protected修饰,也不能用virtual和abstract修饰结构方法。在结构中不能定义析构函数。虽然结构不能从类和结构派生,可是结构能够继承接口,结构继承接口的方法和类继承接口的方法基本一致。下面例子定义一个点结构point:

struct point//结构定义
    {
        public int x, y;//结构中也可以声明构造函数和方法,变量不能赋初值
    }

    class Test
    {
        static void Main()

        {
            point P1;
            P1.x = 666;
            P1.y = 233;
            point P2;
            P2 = P1;//值传递,使P2.x=666,P2.y=233
        }
    }
4,数组

       数组是一组类型相同的有序数据。数组按照数组名、数据元素的类型和维数来进行描述。C#语言中数组是类System.Array类对象,比如声明一个整型数数组:int[] arr=new int[5];实际上生成了一个数组类对象,arr是这个对象的引用(地址)。

       一维数组操作样例:

int[] arr = new int[3];//用new运算符建立一个3个元素的一维数组
            for (int i = 0; i < arr.Length; i++)//arr.Length是数组类变量,表示数组元素个数
            {
                arr[i] = i * i;//数组元素赋初值,arr[i]表示第i个元素的值
            }
            for (int i = 0; i < arr.Length; i++)//数组第一个元素的下标为0
            {
                Console.WriteLine("arr[{0}]={1}", i, arr[i]);
            }

       多维数组:
        string[] a1;//一维string数组类引用变量a1
        string[,] a2;//二维string数组类引用变量a2
        a2=new string[2,3];
        a2[1,2]="abc";
        string[,,] a3;//三维string数组类引用变量a3

        string[][] j2;//数组的数组,即数组的元素还是数组

5,字符串

        a,字符串定义

        string s;//定义一个字符串引用类型变量s

        s="Zhang";//字符串引用类型变量s指向字符串"Zhang"

        string  FirstName="Ming";

        string  LastName="Zhang";

        string  Name=FirstName+"  "+LastName;//运算符+已被重载

        string  SameName=Name;

        char[] s2={'计','算','机','科','学'};

        string s3=new String(s2);

        b,字符串库函数

        字符串搜索IndexOf、字符串比较函数Compare、字符串长度Length、得到子字符串或字符Substring、

        字符串删除函数Remove、插入字符串Insert、字符串替换函数Replace、大小写转换ToLower/ToUpper、

        删除所有的空格Trim

6,程序控制语句

        C#语言控制语句和C基本相同,使用方法基本一致。C#语言控制语句包括:if语句、swith语句、while语句、do…while语句、for语句、foreach语句、break语句、continue语句、goto语句、return语句、异常处理语句等,其中foreach语句和异常语句是C#语言新增加控制语句。

         不同:

        a,与C不同,if语句、while语句、do…while语句、for语句中的判断语句,一定要用布尔表达式,不能认为0为false,其它数为true。

          b,C和C++语言允许switch语句中case标签后不出现break语句,但C#不允许这样,它要求每个case标签项后使用break语句或goto跳转语句

        foreach(类型 变量名 in 表达式) 循环语句,表达式必须是一个数组或其它集合类型,每一次循环从数组或其它集合中逐一取出数据,赋值给指定类型的变量,该变量可以在循环语句中使用、处理,但不允许修改变量,该变量的指定类型必须和表达式所代表的数组或其它集合中的数据类型一致。

        异常语句  try–catch-finally语句

7,类的继承

        属性 类修饰符 class 派生类名:基类名 {类体} 例:class PetPig : Pig//Pig类是基类

        base 关键字:base关键字用于从派生类中访问基类成员,它有两种基本用法:

        a,在定义派生类的构造函数中,指明要调用的基类构造函数,由于基类可能有多个构造函数,根据base后的参数类型和个数,指明要调用哪一个基类构造函数。

        b,在派生类的方法中调用基类中被派生类覆盖的方法。

        代码如下:

 class PetPig : Pig//Pig类是基类

    {
        private int Weight;//重量,新增数据成员

        public PetPig(string Name, int Age, int weight) : base(Name, Age)
        {//注意base的第一种用法,根据参数调用指定基类构造函数,注意参数的传递
            Weight = weight;
        }
        public new void Show()//覆盖基类Display()方法,注意new,不可用override
        {
            base.Show();//访问基类被覆盖的方法,base的第二种用法
            Console.WriteLine("重量:{0}", Weight);
        }
    }

        抽象类和抽象方法

        抽象类表示一种抽象的概念,只是希望以它为基类的派生类有共同的函数成员和数据成员。抽象类使用abstract修饰符,重写的抽象类方法,用override覆盖,public override void Area()