C#语法复习1
一、C#与.net框架

.net是语言无关的。
程序的执行流程:
.net兼容语言的源代码文件
.net兼容编译器
程序集(公共中间语言(CIL)common intermediate language)

托管代码:.net框架下的代码。 C# / VB
非托管代码:不在CLR控制之下运行的代码。 C/C++DLL

CLI 这是在CLR之上的又一个概念,我们称之为 公共语言基础结构(common language infrastructure),它是一个标准。
把所有的.net框架的组件连接在一起的组件。

二、C#编程概述
class simple
{
static void Main()
{
Console.writeLine("I love you !");
}
}
程序以一个类为开头,且类里面有一个Main函数为起始。并且首字母大写。并且为静态方法。
概念: 标识符、关键字、程序的起始点、空白、语句、块
从程序输出文本:WriteLine = Write + \n(换行) 、 格式字符串(Console.WriteLine("three num is {1} and {0} and {1}",3,6);)
格式化数值字符串:格式说明符语法如下:分别是(索引号、对齐说明符(正为右对齐,负为左对齐)和格式字段)
{index, alignment:format}
注释: 单行注释 // 、带分隔符的注释/* */、文档注释/// .
三、类型、存储和变量
1、C#是一组类型声明
C = 函数+数据类型 C++ = 函数 + 类 C# = 一组数据类型声明
一般,我们用命名空间把类型声明包含起来,这样容易管理。
什么是类型?类型其实就是一种模板。实例化类型其实就是
- 变量类型
预定义类型: 简单类型:(11种数值类型、非数值类型(一种Unicode char型、一种bool型))、3种非简单类型(string object dynamic)
用户定义类型:类类型 class struct array enum 、 delegate interface。
其中:预定义类型只需要实例化,而用户定义类型需要两步:声明和实例化。
byte val = 12; //无符号整型
sbyte val1 = -12;//有符号整型
char val2 = 'h';//字符类型,其值为一个Unicode字符
short sa = -12;
ushort usa = 12;
int a;
int b = 100;//32位 4个字节
uint c = 10000;
long lc = 1222222;//64位
ulong ulc = 22222;
string str;
float f1 = 12.0F;// 8个字节
double d1 = 1.23;
bool vall = true;
- 堆和栈
运行中的程序使用两个地方来存储数据:栈与堆。
栈:某类型变量的值、函数的参数、程序的当前环境。 且入栈和出栈是有一定顺序的。
堆:存储某类型的数据对象,堆里面的内存能够以任意顺序存入和移除。且CLR会自动清理垃圾。


- 值类型与引用类型
类型被分为两种,值类型与引用类型,这两种类型的对象在内存中的存储方式不同。
值类型只需要一段单独的内存,用于存储实际的数据。
引用类型需要两段内存。一段存储实际的数据(堆中),一段是一个引用,指向数据在堆中的存放位置。
是不是说:引用类型的对象一定一部分在堆中,一部分在栈中。


值类型: 数值类型+struct+enum
引用类型:非简单类型 object string dynamic + class + interface + delegate + array
- 变量
类字段、结构字段和数组字段可以自动初始化。
静态变量:变量的类型在编译的时候确定并且运行的时候不可以修改。
动态变量:与上面相反,运行时解析,是为了兼容某些Python之类的值。
四、类的基本概念
1、类的概述
类是一种活动的数据结构。它是一种可以存储数据并执行代码的数据结构,它包含数据成员与函数成员。
数据成员存储数据,函数成员执行代码。类是逻辑相关的数据好函数的封装,通常代表真实世界中或概念上的事物。
2、程序和类
运行中的程序其实是一组相互作用的对象的集合。
C#中类的声明没有; 区别与C++。 class + 类名 { xxxxx }
与C++不同的是,C#在外部不能申明全局变量。所有字段必须在类型声明 的内部声明。
类成员包括: 字段 + 方法。
显式与隐式字段初始化:对于值类型,如果没有初始化,会被隐式初始化为默认值。
对于方法:与C++不同,C#没有全局函数,且必须包含有返回类型。
当一个类没有被实例化,也就是相当于没有被分配内存,只有实例化的时候,才会被分配空间,比如int 类型,我们会给它分配空间吗,只有定义了int类型的某一个变量,我们才会分配。也就是说 类的声明与定义一个int 类型是一致的。
为数据分配内存:
Dealer the; //只是保持了引用。没有为类里面的成员分配内存。要为实际数据分配内存,需要使用new 运算符。
New 运算符的作用是为任意类型的实例分配并初始化内存。依据类型的不同从栈或堆中分配。

访问修饰符:私有的、共有的、受保护的、内部的、受保护内部的(private、public、protected、internal、protected internal)
在定义类时,默认为private,无论是字段还是方法,都是一样。
一般我们用矩形框表示一个类,私有的成员在矩形框的内部,共有的漏出一个头。

在类的内部,成员之间可以相互访问,包括字段与方法。
但是,要从类的外部访问成员必须是 变量名称.成员名称。
C#语法复习1的更多相关文章
- sql语法复习:增删查改,各种数据库对象创建和函数使用
推荐工具:机子配置较低的话,可以装Gsql这个工具获得sql执行环境(可作为手册查看内置数据类型 函数和存储过程等) --之前数据库的东西接触不多,虽然基本的语法是了解,但不是很熟悉--最近项目一直在 ...
- c#语法复习总结(1)-浅谈c#.net
出来工作两年,发现自己进步太小了,工作能力是不能混的,想先从基础知识好好复习一下,再深入的学习一些高级框架和先进的理念.找回了博客园的密码账号,好好学习和总结.先从数据类型总结一下,无非就是值类型,引 ...
- Python 基础语法复习
由于选修了<人工智能模式识别>的课程,要求用phthon来实现算法,乘着周三晚上没课,就来回顾一下python的主要语法. 环境: Anaconda Python3.6 1.变量 ...
- 编程类-----matlab基础语法复习(1)
2019年美赛随笔记录: 具体功能:基础语法+基本运算+画图+矩阵+excel读取....... 所遇问题及其解决方案: 1. que:matlab中plot画图无法复制下来图片? ...
- sql基础语法复习(二)-- 分组,连接的使用
一.深入学习 group by group by ,分组,顾名思义,把数据按什么来分组,每一组都有什么特点. 1.我们先从最简单的开始: select count(*) from tb1 group ...
- react 基础语法复习2- react入门以及JSX
引入 react 以及 ReactDom import React from 'react'; import ReactDOM from 'react-dom'; 将react组件渲染到真实dom节点 ...
- react 基础语法复习1- 搭建开发环境
之前有看过阮一峰老师的react教程跟着做了一遍,学习了一下.好久没看,有点忘记了,这次跟着脚手架工具系统的复习一遍.顺便学习学习 react-router 和 redux 首先,脚手架工具我使用的是 ...
- 【SQL】T-SQL基本语法复习
数据库基本的几个对象 数据表.视图.存储过程.索引.触发器.函数 增删改查 Insert into test(name,sex,ago) values ('陈三','男',20) Update tes ...
- 编程类-----matlab基础语法复习(2)
2019年美赛准备:matlab基本题目运算 clear,clc %% 计算1/3 + 2/5 + ...3/7 +10/21 % i = 1; j = 3; ans = 0; % while i & ...
随机推荐
- Lecture1 实验过程模型
Part 1 基本概念 因变量:待检验理论重点关注的,受多个变量影响的变量.(实际考察的,结果) 自变量:影响因变量变化的变量. 因子:重点关注的自变量. 控制变量(control variables ...
- python中map()函数的用法讲解
map函数的原型是map(function, iterable, -),它的返回结果是一个列表. 参数function传的是一个函数名,可以是python内置的,也可以是自定义的. 参数iterabl ...
- js实现一个简单的响应式双向数据绑定
一,基本原理 我们这里使用了对象中的一个特殊属性:访问器属性,这个属性不能在对象中设置,而是必须通过defineProperty()方法单独定义. 我们首先定义一个函数: var obj = { }; ...
- xfce-OpenVAS
OpenVAS开源风险评估系统部署方案 OpenVAS,即开放式漏洞评估系统,是一个用于评估目标漏洞的杰出框架.功能十分强大,最重要的是,它是“开源”的——就是免费的意思啦- 它与著名的Nessu ...
- (总结)CentOS Linux使用crontab运行定时任务详解
安装crontab:yum install crontabs 说明:/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sb ...
- 九度oj 题目1354:和为S的连续正数序列
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...
- linux 中 stat 函数的用途和使用方法
stat 函数讲解 表头文件: #include <sys/stat.h> #include <unistd.h> 定义函数: int stat(const cha ...
- laravel 数据库配置
数据库配置文件为项目根目录下的config/database.php //默认数据库为mysql 'default' => env('DB_CONNECTION', 'mysql'), 'mys ...
- SGU 106 在区间范围内的线性方程解个数
题意:求解方程ax+by+c=0,在区间x1->x2和y1->y2的解的个数. 看似简单,真心a的不容易啊! 开始跪于第8组数据,原因是没用long long !后来改了,跪于12组,超时 ...
- ajax中没法用response下载文件啊
ajax 下载不太现实第一,http 不支持直接的二进制传输,二进制数据需要编码 例如base64 ,这点服务器端可以实现第二,客户端获得编码后的文件要转换,js应该也可以第三点,最为致命,js无法操 ...