C#入门及特性简述

大家好我是学习java时长两年半的C#实习生金某,时值当下荆楚大疫,能有工作已是不易,工资不高,难的心安。

因为是没有学过C# ASP.NET 的,所以在网上四处找教程学习,同时也分享一下自己的学习记录和感慨。

首先是这样的哈,C#是微软继C/C++后的一种面向对象的高级编程语言,其即拥有面向对象的易理解特性又拥有C/C++的指针功能,年代略微久远,但是俗话说得好,没有最差劲的语言只有最差劲的程序员,遇到问题就学习!!!奥利给

当然学习这门语言首先就是了解程序结构,数据结构,基本数据类型,以及语法(至于底层的编译原理什么的可以将这门语言学好之后慢慢去理解)

下面就给大家贴一段非常简单的代码

//导入系统包
using System;

//命名空间
namespace demo
{
    //类名
    class Hello 
    {
        //Main函数
        static void Main(string[] args)
        {
            //写一行HelloWorld(万能HelloWorld)
            Console.WriteLine("Hello World!");
            //从键盘读取一行字符
            Console.ReadLine();
        }
    }
}

上面就是这个C#程序的基本结构,然后就是数据类型,给读者简单介绍一下常用的数据类型

  • int-长整型
  • long-整形
  • float-单精度形,精确到小数点后7位
  • double-双精度形,精确到小数点后14位
  • string-字符串类型
  • char-字符类型
  • bool-布尔类型-值只有true 或者false=既成立或者不成立,正确或者不正确

因为时间原因这里一切从简,详尽的解释将在后面补上

然后简单的讲解一下if_else分支和switch分支(如果有编程基础,这一段和循环可以直接跳过,直接看面向对象的特性)

using System;

namespace dmeo2
{
    class Dmeo
    {
        static void Main(string[] args)
        {
            int num = 10;
            if(num > 1)
            {
                Console.WriteLine("大于1");
            }
            else
            {
                Console.WriteLine("小于1")
            }
            //从if关键字开始就是我们的if_else代码
            //如果if后面大括号中要执行的代码只有一行
            //那么可以不写{}大括号

            //然后在给大家展示一个三目运算符
            num <= 10 ? Console.WriteLine("成立") : Console.WriteLine("不成立") ;

            //然后展示一个switch分支结构
            switch(num)
            {
                case 10 :
                    Console.WriteLine("num = 10");
                break;
                case 20 :
                    Console.WriteLine("num = 20");
                break;
                default:
                    Console.WriteLine("条件均不满足时默认执行");
                break;
            //解释一下这里为什么每一个都要加 break; 关键字
            //如果不加这个break那么当他满足第一个=10条件的时候
            //他会继续向下执行,如果条件满足,将会继续执行下一个case
            //如果这里只想要一个处理方案,那么就必须写个break来中断switch
            }
        }
    }
}

刚才写代码有点上头,突然想到,if switch是可以分支选择的,但是条件判断怎么说呢?:

上面代码中Main函数中的if后面和switch后面的括号里面的内容就是条件,条件一般是bool类型,如果有两个数字型(int/long/flaot/double)进行对比,就使用一下的判断表达式:

>=   大于等于

<=   小于等于

==  等于

如果有多个条件需要连接,一下是最常见的连接方式

&& 两个条件都满足时 返回true

|| 两个条件中的一个满足 返回true

(注释一下啊,因为默认大家都知道基本编程,所以基础编程里面的循环分支选择这些结构不会怎太细致的去说)

如果有需要的话,可以百度搜索C#菜鸟编程或者自行购买C#相关教材

循环:

using System;

namespace demo3
{
    class Demo3
    {
        static void Main(string[] args)
        {
            int sum = 0;
            //for循环
            for(int i = 0;i < 100;i++)
            {
                sum += i;
            }
            Console.WriteLine("1-100的累加和为{0}",sum);
            while(sum < 1000)
            {
                //条件是sum自增小于1k时执行循环
                Concole.WriteLine("whilte loop {0}",sum++);
            }
            Console.WriteLine("sum = {0}",sum);
        }
    }
}

解释都写在注释里面的,然后就可以讲一讲C#的面向对象特性了,跟大多数语言都是一样的,拥有封装继承多态这样的特性,

接下来就写个简单的代码演示一下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上code是调用类库

//命名空间
namespace ConsoleApplicationDmeo
{
    /**
     * 利用get和set属性来构造一个对象和其属性值的方法如此类中的写法
     */
    class myObj
    {
        //面向对象封装特性
        private int id;
        private string name;
        private int age;
        private char sex;
        //写一个构造函数,可以在实例化对象的时候进行参数的传递,这里是声明的无参数的构造函数
        public myObj()
        {
            Console.WriteLine("构造函数被调用");
        }

        //当一个函数被private修饰的时候,它是私有的 只能在当前类访问
        //所以需要以下的代码从class外部的访问私有属性
        //C#的getset函数也是属性,所以写法略有不同,如下所示
        public int ID
        {
            get { return this.id; }
            set { this.id = value; }
        }
        public string Name
        {
            get { return this.name; }
            set { this.name = value; }
        }
        public int Age
        {
            get { return this.age; }
            set { this.age = value; }
        }
        public char Sex
        {
            get { return this.sex; }
            set { this.sex = value; }
        }
        //一个用来展示内部数据的函数
        public void display()
        {
            Console.WriteLine("this is my first object [id = {0},name = {1},age = {2},sex = {3}]", this.id, this.name, this.age, this.sex);
        }
    }
    class Sharp_Private
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello world\nand now i am start my first program\nintpu 110 to begin");
            myObj mo = new myObj();
            mo.ID = 110;
            mo.Name = "demo";
            mo.Age = 28;
            mo.Sex = 'm';
            mo.display();
            Console.ReadLine();
        }
    }
}

然后简单的解释一下继承和多态特性

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplicationDmeo
{
    //定义一个动物类
    class Animal
    {
        protected string name;
        protected string hobbit;

        public string Name
        {
            get { return this.name; }
            set { this.name = value; }
        }
        public string Hobbit
        {
            get { return this.hobbit; }
            set { this.hobbit = value; }
        }
       
        public void printInfo(){
            Console.WriteLine("{0}的爱好是{1}",this.name,this.hobbit);
        }
    }

    //定义狗类继承了Animal
    class Dog : Animal
    {
        //public string Name
        //{
        //    get { return this.name; }
        //    set { this.name = value; }
        //}
        //public string Hobbit
        //{
        //    get { return this.hobbit; }
        //    set { this.hobbit = value; }
        //}

    }

    //定义猫类继承了Animal
    class Cat : Animal
    {
        //public string Name
        //{
        //    get { return this.name; }
        //    set { this.name = value; }
        //}
        //public string Hobbit
        //{
        //    get { return this.hobbit; }
        //    set { this.hobbit = value; }
        //}
    }
    //这里可以看到继承自Animal的子类均没有写相关的函数(被注释了)
    class Sharp_Extends
    {
        static void Main(string[] args)
        {
            Console.WriteLine("关于继承/多态特性的代码片段");

            //这里是继承特性的展示
            /*
             * 即便我们派生类(子类)中没有写入函数,但是依旧可以访问,这就是继承特性
             * 继承是指子类继承了父类,可以访问父类中被protected/public关键字修饰的属性或者函数
             * 关键字:
             * 
             */
            Dog dog = new Dog();
            dog.Name = "狗类";
            dog.Hobbit = "吠";
            Cat cat = new Cat();
            cat.Name = "猫类";
            cat.Hobbit = "玩";

            dog.printInfo();
            cat.printInfo();

            //多态:
            /*
             * 这里是多态特性的演示,多态是指在同一条继承链上或者interface的实现类上
             * 可以通过父类去new一个子类的特殊写法
             * 具体详解后面在讲
             */

            Animal _dog = new Dog();
            _dog.Name = "多态狗";
            _dog.Hobbit = "粑粑";
            _dog.printInfo();

            Console.WriteLine("-----");
            
            Console.ReadLine();
        }
    }
}

关于C#的初学就先分享到这里,后续会持续进行补充修改,并发表关于C#网络编程,多线程,IO流这几个方面的高级编程

如果上述内容有误,请一定指正,如果想深入沟通交流请发送邮件到

iziro4h@qq.com

谢谢您的浏览,要是觉得还行,帮金老师点个赞吧

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值