c#学习笔记

c#的编译与运行:

1、标识符

用以命名变量、参数、方法等,命名规则:由字母、数字、下划线组成(@),首位可以是字母或下划线(@)

2、关键字

c#关键字全部小写,例如:abstract、const、char、byte、int、short、long、float、double、bool、string、true、false、new、if、else、for、try、catch、void、class、public、private、basic、as、continue、break...

3、格式化数字字符串

格式说明符:{索引号,(对齐说明符):(格式字段)}

        索引号数值由0开始,不得超过替换项的索引

        对齐说明符:指定字段宽肃,左对齐或右对齐;由正整数或负整数组成,正整数代表表示右对齐,负整数表示左对齐

例:Console.WriteLine(“|{0,10|}”,500);

输出:|       500|

当字符数<对齐说明符指定数,以空格补齐,当字符数>对齐说明符指定数,对齐说明符失效。

        格式字段:指定数字以哪种格式表示,例如货币、进制、小数定点保留位数、科学计数法、百分比等

例:Console.WriteLine(“The value is {0:C}”,200);

输出: The value is $200

标准数字格式说明符
名字和字符       意义

货币

C/c

将值转化为货币,符号取决于pc位置

精度说明符:小数位数

十进制数

D/d       

精度说明符:输出最少位数,不足左边以0填充

例如:"{0:D4}",12  输出: 0012

定点

F/f

精度说明符:小数位数

十六进制数

X/x

十六进制中的A-F的大小写取决于X的大小写

精度说明符:输出最少位数,不足左边以0填充

例如:"{0:x}",345678  输出: 2bf3a

数字

N/n

整数部分没三位一个逗号隔开

精度说明符:小数位数

例如:“{0:N2}”,12345678.54321

输出:12,345,678.54

百分比

P/p

以百分数表是数值

精度说明符:小数位数

往返过程

R/r

parse方法时,保证数值

科学记数法

E/e

具有指数和尾数的科学记数法,E的大小写随E

精度说明符:小数的位数

例如:“{0::e4}”,12.3456789

输出:1.2346e+001

4、注释

单行注释: //

多行注释:/*    */

文档注释:///

5、类型

引用《c#图解教程》,c#程序或者dll源程序是一组类型声明;对于可执行程序,类型声明中必须有一个包含main方法的类;命名空间是一种将相关的类型声明分组并命名的方法,通常在创建的命名空间内部声明程序类型。

简单类型:short、int、long等等,智能存储一个数据项;

数组类型可以存储多个同类型的数据项,称数组元素;

包含不同类型数据项的类型,数据项称成员,有数据成员,有函数成员。

c#提供的16中预定义类型:

11种数值型:sbyte、byte、short、ushort、int、uint、long、ulong有无符号整数型,float、double浮点数类型,decimal高精度小数类型;

1种Unicode字符型:char;

1种布尔类型:bool,只有true、false两个值;

ps:在c#中数值类型不具有布尔意义

3种非简单类型:Unicode字符数组:string,基类:object,使用动态语言编写的程序集时使用:dynamic。

用户定义类型:

类class、结构struct、数组array、枚举eum、委托delegate、接口interface。

6、存储

栈:后进先出的数据结构,栈存储的数据:某些类型变量的值、程序当前的环境、传递给方法的参数,只能从栈顶存入与删除。

堆:可以以任意顺序存入与删除,可以分配大块的内存用于存储某种类的对象。

7、值类型和引用类型

非成员数据的值类型数据存在栈中,引用类型数据存在堆里,引用存在栈中。

c#中的值类型与引用类型
值类型引用类型
预定义来类型sbyte、byte、short、ushort、int、uint、long、ulong、boolchar、string、float、double、decimal、dynamic、object
用户定义类型struct、enumclass、interface、array、delegate

8、变量声明与初始化

例:int a = 10;

多变量声明

例:int a =10,b=20;

9、类

程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合

数据成员:数据成员通常模拟该类所表示的现实世界事物的特性,比如在student类中,可以有语文成绩、数学成绩、英语成绩;或者在people类中,可以有身高、体重等等

函数成员:执行代码,通常会模拟类所表示的现实世界事物的功能和操作,比如student类中,可以有上课发言,打球、考试;或者在people类中,可以有吃、喝。拉、撒、睡等

类成员的类型
数据成员存储数据函数成员执行代码

字段

常量

方法        运算符

属性        索引器

构造函数        事件

析构函数

声明类

class 类名

{

        成员声明

}

字段和方法时类最重要的类成员类型

字段:

        字段是隶属于类的变量,可以是预定义类型或是用户定义类型;

ps:c#在类型外部不能声明全局变量,所有的字段都属于类型,而且必须在类型声明内部声明;

如果没有初始化字段,编译器会将字段设置成默认值,值类型默认值为0,布尔类型为false,引用类型为null。

方法:

        方法是具有名称的可执行代码块,可以从程序的很多不同地方执行,甚至从其他程序中执行。(函数)

声明方法的最简语法:

返回值类型 方法名称(参数列表)

{

        方法体

}

ps:c#中没有全局函数声明在类型声明的外部,且方法没有默认的返回类型。没有也得写void

创建类的实例:

Dealer theDealer;  声明引用变量

theDealer = new Dealer();   为类对象分配内存并赋值给变量

访问修饰符: 是用来修饰成员的可选部分,指明程序如何访问成员

private私有的、public公有地、internal内部的、protected受保护的、protected internal受保护内部的

私有成员只能从声明类中访问,为默认访问级别;实例的公有成员可以被程序中其他对象访问。

从类的内部访问成员很容易理解,从类外部访问成员必须包括变量名称和成员名称,例如:

DaysTemp myDt = new DaysTemp();   //创建类的对象

float fValue = myDt.Average();              //外部访问  (公有的成员才能被访问)

class DaysTemp
{
    public int High,Low;
    public int Average()
    {
        return (High + Low) / 2;
    }
}

class Program
{
    //创建两个DaysTemp实例
    DaysTemp t1 = new DaysTemp();
    DaysTemp t2 = new DaysTemp();
    
    //给字段赋值
    t1.High = 76; t1.Low = 57;
    t2.High = 75; t1.Low = 53;
    
    //读取字段值,调用实例的方法
    Console.WriteLinw("t1:{0},{1},{2}",t1.High,t1.Low,t1.Average());
    Console.WriteLinw("t2:{0},{1},{2}",t2.High,t2.Low,t2.Average());
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中的各种名词: 常数:声明时用const修饰,是隐式静态类型 域:一个代表和某对象或类相关的变量的成员 字段:和属性相同,是用来存储对象的值,可以直接访问数据且不能对数据添加任何限制,但是属性不能且可以对数据添加访问限制。一个在类或结构的定义中声明的变量。可以被这个类或者结构的所有成员函数(方法、构造函数)使用,可以是值类型或引用类型,主要有实例字段和静态字段。区别于局部变量在于局部变量只能被给定的函数或代码块使用 属性:一种用于访问对象或类的特性的成员。属性的访问器是一种使属性可以像公共数据成员一样被使用的特殊方法(get/set方法)。属性结合了字段和方法的多个方面,对于对象的用户,它显示为字段;对于类的实现者,它是一个或两个代码块(用于表示get/set访问器)。写类的时候使用System.Serializable属性以便使类的成员可以序列化 方法:是一种用于实现可以由对象或类执行的计算或操作的成员。类的方法主要是和类相关联的动作,它是类的外部界面,对于那些私有的字段来说,外部界面实现对它们的操作一般只能通过方法来实现。方法在类或结构中声明,声明时需要制定访问级别、返回值、方法名称及方法参数。一个方法的签名由它的名称以及它的形参的个数、修饰符和类型组成。方法的签名是方法的唯一标识(同一个类中的区别标识)。 方法的重载:是指方法名相同,但参数类型、个数或顺序不同的方法,与返回值无关(同一类或子类之间) 方法的重写:子类对父类方法的重新实现(方法头相同,方法体即代码块不同) 事件:是使得对像和类提供通知的成员。一个类通过提供事件声明来定义一个事件,这看起来与域和事件声明相当类似,但是有一个event关键字。这个声明的类型必须是delegate类型。如下例子: public delegate void EventHandler(object sender, Event e); public class Button { public event EventHandler Click; public void Reset() { Click = null; } } 索引:是使得对象可以像数组一样被索引的成员 结构:一种值类型,几个数据组成的数据结构。向方法传递结构时,是通过传值方式传递的,结构实例化可以不用new,结构可以声明构造函数,但必须带参数,且声明的构造函数是用来对成员初始化的,必须包含每个字段。结构不能从另一个结构或类继承而来,但可以实现接口,结构中不能初始化实例。结构存储在栈中且只用来表示小的数据结构,类存储在托管堆中 类:是一种数据结构,是具有相同或相似结构、操作和约束规则的对象组成的集合。算法和数据结构的集合(对象),具有封装、继承、多态等特点。父类—基类、子类—派生类。类的多态是指不同的类进行同一操作可以有不同的行为。类是相同对象的集合,并为这些对象定义了编程语言上的属性和方法。类修饰符:new在类声明时使用,public公共的,访问不受限,protected只能从其所在类和所在类的子类中进行访问,internal只有其所在类才能进行访问,private私有的,abstract抽象类,不能实例化,sealed密封类,不能被继承 虚拟成员:声明为virtual的类成员 析构函数:以类名+~来命名的,不能有参数,不能有任何修饰符而且不能被调用。当某个类的实例被认为不再有效并符合析构条件时,.NET Framework类库的垃圾回收功能就会调用该类的析构函数实现垃圾回收,一个类只能有一个析构函数。一般准则是,除非有迫不得已的原因,不要使用析构函数,而应把清楚操作交给运行时完成 接口:声明的所有成员隐式的为public和abstract。在命名空间中声明的接口可以被授予public或internal访问类型。嵌套的接口可以被授予public、protected、internal、protected internal或private访问类型。默认为internal.接口的成员隐式的被声明为public和abstract访问类型且没有实现没有修饰符 密封类:密封类不能作为基类被继承,但可以继承别的类或接口,密封类中不能声明受保护的成员或虚成员,密封类不能声明为抽象的,声明密封类用sealed.密封方法只能用于对基类的虚方法进行实现,声明密封方法时同时使用sealed和override且必须通过重写基类中的虚方法来实现 名称空间:类似java中的包 集合: 代表: 访问修饰符:private、public、protected、internal:局部的 readonly:只读修饰符 new(新的)、static(静态的)、virtual(虚拟的)、override()、sealed(密封的)、abstranct(抽象的)、extern(外面的) 派生类调用基类的方法可以使用base关键字,如base.Method();

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值