c#学习1

根据刘铁猛老师学习做的笔记
老师邮箱:Mr.Okay@outlook.com

类的概念

类class是对现实世界事物进行抽象所得到的结果
建模是一个去伪存真、由表及里的过程
对象也叫实例,是经过“实例化”后得到的内存中的实体
使用new操作符创建类的实例
类的三大成员
属性 方法 事件
某些特殊类或者对象在成员方面侧重点不同
模型类或对象重在属性,如Entity Framework
工具类或对象重在方法,如Math,Console
通知类或对象重在事件,如各种Timer
静态成员与实例成员
1.静态(static)成员在语义上表示它是“类的成员”;
2.实例(非静态)成员在语义表示它是“对象的成员”
3.绑定(Binding)指的是编译器如何把一个成员与类或对象关联起来
不可小觑的“.”操作符——成员访问

C#语言基本元素

构成c#语言的基本元素:
关键字(keyword)
操作符(Operator):加减乘除以及逻辑运算
标识符(ldentifier):
什么是合法的标识符?不能和关键字冲突,可以用字母、数字、下划线、不能拿数字开头,至少覆盖90%
查MSDA文档
标点符号
文本(字面值) 前五项统称为标记(Token)
布尔值(逻辑运算)
bool b =true;
bool b2=false;
实数
long a=3L;
float x=3.0;float是单精度浮点类型
double y=4.0D;double是双精度浮点类型
D表示双精度浮点类型
字符: char c=‘a’
单引号只能引一个字符
字符串:string str=“ABCDE”;也可以是一个字符
空值:string str =null

注释与空白:单行注释//;块注释 /开头 结尾/
空格 ,有时候必须加,c#语言,多个空格与一个空格一样;edit->advanced->format document可以自动把空格格式调整;快捷键:ctrl+连续D+E;

简要介绍类型、变量与方法
算法简介

类型、变量和方法

类型(Type)

 var x = 3L;
 Console.WriteLine(x.GetType().Name);

变量是存放数据的地方,简称数据
int x;
x=100;
方法(旧称函数)是处理数据的逻辑,又称“算法”
方法的声明
方法的调用

class Program
    {
        static void Main(string[] args)
        {
            Calculator c = new Calculator();
            int x = c.Add(2, 3);
            Console.WriteLine(x);

        }
    }
    class Calculator
    {
        public int Add(int a,int b)
        {
            int result = a + b;
            return result;
        }
    }
class Program
{
    static vo Main(string[] args)
    {
        Calculator c = new Calculator();
        string str = c.Today();
        Console.WriteLine(str);

    }
}
class Calculator
{
    public int Add(int a,int b)
    {
        int result = a + b;
        return result;
    }
    public string Today()
    {
        int day = DateTime.Now.Day;
        return day.ToString();

    }
}

不用数据变量,直接返回结果

有些没有数据返回,用void(有输入没有输出,直接写出来)

class Program
{
    static void Main(string[] args)
    {
        Calculator c = new Calculator();
        c.PrintSum(4, 6);


    }
}
class Calculator
{
    public int Add(int a,int b)
    {
        int result = a + b;
        return result;
    }
    public string Today()
    {
        int day = DateTime.Now.Day;
        return day.ToString();

    }
    public void PrintSum(int a,int b)
    {
        int result = a + b;
        Console.WriteLine(result);
    }
}

程序=数据+算法

算法简介

循环

    class Program
    {
        static void Main(string[] args)
        {
            Calculator c = new Calculator();
            c.PrintXTo1(10);


        }
    }
    class Calculator
    {
        public void PrintXTo1(int x)
        {
            for (int i = x; i >0; i--)
            {
                Console.WriteLine(i);
            }
        }
    }

递归

    class Program
    {
        static void Main(string[] args)
        {
            Calculator c = new Calculator();
            c.PrintXTo1(10);


        }
    }
    class Calculator
    {
        public  void PrintXTo1(int x)
        {
            if (x==1)
            {
                Console.WriteLine(x);
            }
            else
            {
                Console.WriteLine(x);
                PrintXTo1(x - 1);
            }
        }

    }

计算1到100的和

    class Program
    {
        static void Main(string[] args)
        {
            Calculator c = new Calculator();
            int result=c.SumForm1ToX(100);
            Console.WriteLine(result);


        }
    }
    class Calculator
    {
        public  int SumForm1ToX(int x)
        {
            int result = 0;
            for (int i = 1; i < x+1; i++)
            {
                result = result + i;
                

            }
            return result;
        }

    }

用递归方法:

    class Program
    {
        static void Main(string[] args)
        {
            Calculator c = new Calculator();
            int result=c.SumForm1ToX(100);
            Console.WriteLine(result);


        }
    }
    class Calculator
    {
        public  int SumForm1ToX(int x)
        {
            int result = 0;
            if (x==1)
            {
                return 1;
            }
            else
            {
                result = x + SumForm1ToX(x - 1);
                return result;

            }
        }

    }

详解类型、变量与对象

什么是类型?(Type)
又名数据类型
是数据在内存中存储时的“型号”
小内存容纳大尺寸数据会丢失精确度、发生错误
大内存容纳小尺寸数据会导致浪费
编程语言的数据类型与数据的数据类型不完全相同

强类型语言与弱类型语言的比较
C语言示例:if条件
JavaScript示例:动态类型
c#语言对弱类型/动态类型的模仿

类型在c#语言中的作用
一个c#类型中所包含的信息有:
存储此类型变 量所需的内存空间大小
此类型的值可表示的最大、最小值范围
此类型所包含的成员(如方法、属性、事件等)
此类型由何基类派生而来

程序运行的时候,此类型的变量在分配在内存的什么位置
Stack简介(栈)方法调用,小,快
Stack overflow栈溢出
Heap简介,存贮对象,大 ,几个G,要回收,内存泄露
使用Performance Monitor查看进程的堆内存使用量
关于内存泄漏
此类型所允许的操作(运算)

Type myType = typeof(Form);
Console.WriteLine(myType.FullName);

C#语言的类型系统
变量、对象与内存

自己遇到的问题汇总:

1.C#运行结果一闪而过,没有停留,等待用户按任意键关闭
解决办法:1.运行程序的时不用F5键执行,用Ctrl+F5执行,它的意思是“启动执行(不调试)”。
2.在代码的最后加上这句 Console.ReadLine(); 也就是“等待用户输入”,这样DOS窗口直到你敲击回车键才会关闭或者在程序最后加上一句Console.ReadKey();这样DOS窗口接收一个字符才会退出。
2.使用using时缺少,程序集引用,报错,
解决方法:如果是未找到类型,检查是否引用了类型所在的命名空间,使用using指令。
选择 -> “项目” -> “添加引用” ->搜索需要的引用

c#语言的五大类型系统
类(class):如Windows,Forms,Console,String
结构体(Structures):如Int32,Int64,Single,Double
枚举(Enumerations):enum
HorizontalAlignment,Visibility
接口(Interfaces)
委托(Delegates)
c#类型的派生派系

变量、对象与内存

变量的用途是存储数据
变量表示了存储位置
变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能够存入变量
也就是变量名称(对应着)变量的值在内存中的存储位置;
变量一共有7种
静态变量,实例变量(成员变量,字段),数组元素,值参数,引用参数,输出形参,局部变量

静态成员属于这个类,而不是这个类的实例

狭义的变量指局部变量,因为其他种类的变量都有自己的约定名称
简单地讲,局部变量就是方法体(函数体)里声明的变量
变量的声明 int a;
有效的修饰符组合opt 类型,变量名,初始化器opt
综合:变量=以变量名所对应的内存地址为起点、以其数据类型所要求的存储空间为长度的一块内存区域

值类型的变量
以byty/sbyty/short/ushort
值类型没有实例,所谓的“实例”与变量合而为一
sbety -128~127
uint 32比特,4个字节
计算机存储负数:按位取反再加一
ushort无符号短整型,0-65535占16比特,也就是两个字节
short-32768~32767
引用类型的变量与实例
“小朋友牵着气球”
引用类型变量与实例的关系:引用类型变量里存储的数据是对象的内存地址

局部变量是在stack(栈)上分配内存
变量的默认值为0.
常量(值不可以改变的变量)
装箱与拆箱
装箱object,:把栈上值类型封装成object实例放在堆上
拆箱:从堆里object实例拆成目标数据类型往栈里搬东西
装箱和拆箱会损失程序的性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值