001 C#入门详解
1、C#简介
- 下载离线MSDN文档
- MSDN安装: https://blog.csdn.net/guo13313/article/details/50738173
- C#语言定义文档(Language Specification): https://www.microsoft.com/en-us/download/confirmation.aspx?id=7029
- 推荐书籍:C# 5.0 In A Nutshell
2、初识类库(DLL)、类(Class)与名称空间(Namespace)、类库引用(DDL引用——黑盒引用;项目引用——白盒引用)、依赖关系、排除错误
(类库——类dll——namespace——class——方法)
namespace:相当于是图书馆里的不同学科划分
class:书本
使用namespace便于管理class
语言bashccppgojavajavascriptnginxphppythonperlsqlswiftjsoniniyaml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Class
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello world");
}
}
}
类库的引用
类库的引用时使用名称空间的物理基础,不同技术类型的项目默认引用不同的类库。dll类库
DDL引用(黑盒引用,无源代码)(ddl文件)【引用-选择dll文件】
项目引用(白盒引用,有源代码)引用现有解决方案【解决方案——现有解决方案——Visual c# Project Files-添加;引用-解决方案-勾选文件-添加】
新建解决方案【选择project——添加项目——class(执行结果为Dll文件)】
依赖关系
黑盒引用时如文件有逻辑错误,开发人员无法修改,只能让原开发人员修改错误重新编译后再发送文件给我才能解决问题。引用的类库有问题导致程序出现问题就是依赖关系,在实际工作中需减少依赖的强度。
类(或对象)之间的耦合关系
UML(通用建模语言)类图
Nuget引用(引用-》管理Nuget程序包)
可同时引用多个类库
排除错误
仔细阅读编译器的保存
MSDN文档与搜索引擎结合
选择断点——debug——F11(逐过程执行)
语言bashccppgojavajavascriptnginxphppythonperlsqlswiftjsoniniyaml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tools;
namespace Class
{
class Program
{
static void Main(string[] args)
{
// Console.WriteLine("Hello world");
double result = Calulator.Add(1,2);
Console.WriteLine(result);
}
}
}
3、类(class)、对象、成员简介
- 类与对象的关系(对象、实例)
- 类的三大成员(属性【Property】、方法【Method】、事件【Event】)
- 类的静态成员与实例成员
属性(Property)
存储数据,组合起来表示类或对象当前的状态
方法(Method)
由C语言中的函数(function)进化而来,表示类或对象“能做什么”
工作中90%的时间是在与方法打交道,因为它是“真正做事”,“构成逻辑”的成员
事件(Event)
类或对象通知其他类或对象的机制,为C#特有(Java通过其他办法实现这个机制)
善于使用事件非常重要
使用MSDN文档
某些特殊类或对象在成员方面侧重点不同
模型或对象重在属性,如Entity Framework
工具类或对象重在方法,如Math,Console
通知类或对象重在事件,如各种Timer
5、语言基本·元素概览、初识类型、变量与方法、算法简介
课后习题
一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小依次叠上去,庙里的众僧不倦地把他们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一片,而且大的不能放在小的上面,要搬多少次才能把一根棒上的金片转移到另外一根上。(提示,用递归方式思考和解决)
语言bashccppgojavajavascriptnginxphppythonperlsqlswiftjsoniniyaml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 汗诺塔
{
class Program
{
static void Main(string[] args)
{
int[] w1 = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] w2 = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] w3 = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
for (int i = 0; i < 10; i++)
{
if (i ==0 )
{
w3[9] = w1[0];
w1[0] = 0;
w2[9] = w3[9];
w3[9] = 0;
Console.WriteLine(string.Join(",", w1));
Console.WriteLine(string.Join(",", w2));
Console.WriteLine(string.Join(",", w3));
}
if (i > 0) {
w3[9] = w1[i];
w1[i] = 0;
for (int j = 0; j<i; j++)
{
w1[i-j] = w2[10-i+j];
w2[10 - i + j]= 0;
}
w2[9] = w3[9];
w3[9] = 0;
for (int j = 0; j <i; j++)
{
w2[9-j-1] = w1[j+1];
w1[j+1] = 0;
}
Console.WriteLine(string.Join(",", w1));
Console.WriteLine(string.Join(",", w2));
Console.WriteLine(string.Join(",", w3));
}
}
Console.WriteLine(string.Join(",", w1));
Console.WriteLine(string.Join(",", w2));
Console.WriteLine(string.Join(",", w3));//打印数组内容,以逗号分隔
}
}
}
6、类型,变量与对象详解(上)
- 什么是数据类型(Type)
- 类型在C#语言中的作用
- C#语言的类型系统
- 变量、对象与内存
什么是类型
数据类型是数据在内存中存储时的“型号”,小内存容纳大尺寸数据会丢失精确度,发生错误,大内存容纳小尺寸数据会导致浪费。
强类型语言与弱类型语言的比较
p15
浙公网安备 33010602011771号