http://product.dangdang.com/24178813.html
概述及编辑器技巧:
控制台程序;Console.WriteLine Console.ReadLine
Winform程序:MessageBox.Show(“哈哈!”);
注释:单行;多行;XML注释///
使用VS.NET的技巧:
预制代码段:
右键插入代码段: for ,两次TAB键,
for (int i = 0; i < length; i++)
{
}
region,两次TAB 键
#region MyRegion
#endregion
变量重命名:右键定位到变量上面,选择Rename:修改完,应用;
6:快速搜索:
(1)根据类名:点击小灯泡;
(2)右键类名,选择Quick Actions,
方法生成:根据方法名及参数生成完整的方法定义;
方法提取:将已有的代码段部分提取出一个新方法;
选择代码, ExtractMethod
2017/10/22 18:09
7:任务备忘录:笔记记录工程记录;
//TODO
8:代码折叠:
#region 方法描述
# endregion
http://www.mingrisoft.com/video/126.html
2017/10/23 21:56
2017/10/24 11:27
数据类型与运算符
值类型:存放变量的真实值;
引用类型: 存放值的引用;(类、数组、字符串、接口)
常量:
通过const或者readonly关键字声明;
const double pi = 3.1416;
变量: 数字、字母、下划线;
变量的命名法:
Pascal命名法;Camel;匈牙利命名法;
简单数据类型:
bool类型:true和false
字符串向bool类型转换:Parse与TryParse的区别:
http://www.cnblogs.com/fishtreeyu/archive/2011/01/15/1936193.html
整型类型:sbyte,byte,short,ushort,int,uint,long,ulong;
char类型:
char 类型:
单个字符:char myname=’王’
字符串:string s=” China”
含有众多方法IsNumber,IsDigit等;
Console.WriteLine(char.IsDigit(‘a’));
Console.WriteLine(char.IsDigit(‘a’).ToString());
小数类型:
float f1=1.0f;
double f2=1.0d;
decimal d2=2.0m;
小数的误差累积:
double d = 0;
for (int i = 0; i < 70; i++)
{
d += 0.1;
Console.WriteLine(d + “\t”);
}
解决方法如:if d=6.2 改为 if (d-6.2)<0.001
枚举类型:
enum Season
{
Spring =0;
Summer =1;
Autum =2;
Winter =3;
}
0可以赋值给任何类型的枚举变量,枚举元素的值按定义顺序递增1;
结构类型:
Struct StuInfo
{
public string StuNo;
public int stuName;
}
隐式类型变量:
var 可以用来定义任何数据类型,但在声明的同事需要赋初始值;
能不用就不用;
运算符:
算术运算符:取模:%
Console.WriteLine(“i%j的结果:{0}”,i%j);
赋值运算符:
关系运算符与逻辑运算符:
& 与:会将运算符两端的表达式进行计算;
&& 短路与:视情况而定;
位运算符:
条件运算符:? :
右结合性;
运算符的优先级:
好难记,加括弧;
Type.Parse() 与Type.TryParse() ;
Convert类:
Console.WriteLine(Convert.ToInt32(10.4));
装箱与拆箱:
值类型与object类型(引用类型)相互转化;
查看数据类型占用字节:
Console.WtiteLine(sizeof(int))
2017/10/24 22:45
程序控制
选择语句
if 选择语句
Console.WriteLine(“时间:”+DateTime.Now.Hour);
Console.WriteLine(“时间:{0}”, DateTime.Now.Hour);
switch语句:
switch(表达式)
{
case 值1:
语句系列;
break;
case 值2:
语句;
break;
default:
语句;
break;
}
循环语句:
for
while
do …while
跳转语句:
break语句;
continue语句;
goto语句;
return语句;
throw语句;
程序执行耗时计算方法:
using System.Diagnostics;
计时开始位置输入:Stopwatch sw = new Stopwatch();
sw.Start();
执行语句;
sw.Stop();
Console.WriteLine(“执行完毕,停止计时,执行时间:{0}毫秒”,sw.ElapsedMilliseconds);
随机数:System.Random
程序集:exe文件和dll文件;
面向对象:
类和对象:
面向对象最重要的特性:封装;
继承:
类和对象的关系:
影星是类:
黄日华、翁美玲、周润发是对象;
class star
{
}
//实例化一个例:关键字:new
star huangRiHua = new star();
字段:
一般情况下,应将字段声明为private,然后通过属性、方法来访问其内容;
属性:2017/10/25 17:04
class 类名
{
//属性的一半声明方式;
private 类型 字段名;
public 类型 属性名
{
get
{
return 字段名;
}
set
{
字段名 = value;
}
}
}
自动属性:”懒人方式”
class star
{
//定义Name 属性
public string Name
{
get;
set;
}
}
就是私有域不能访问,但是通过创建了成员变量的属性,通过属性来访问私有域;
2017/10/25 23:12
方法
访问修饰符:public、 private、internal、protected;
变量的作用域:变量的生命期;
方法重载:方法名相同,除方法名外的其他签名指标不同;
方法签名:方法名,参数个数,参数类型,参数顺序相同被认为这两个方法具有相同的方法签名;
参数个数的不定问题-params
//定义一个含params参数的类;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class mathOpr1
{
public int Add(params int[] nums)
{
int sum = 0;
for (int i = 0; i < nums.Length; i++)
sum = sum + nums[i];
return sum;
}
public void getVolume()
{
Console.WriteLine(Add(3, 6));
}
}
class mathOpr
{
static void Main(string[] args)
{
mathOpr1 test = new mathOpr1();
test.getVolume();
//Console.WriteLine(Add(3, 6));
Console.ReadLine();
}
}
}
//add 方法在同一级调用不用实例化。
静态方法和实例化方法的区别
待看:http://www.cnblogs.com/chinhr/archive/2008/04/03/1135561.html
2017/10/27 13:36
ref 与out ref与out 同属按引用传递;
ref 需要在传输前赋初值;out在函数内部赋初值,以便将函数值带到外面;
再看:
http://www.cnblogs.com/yangfengwu/p/5864058.html
public(共有的) 声明的方法和属性,可以被外部调用.
private(私有的) 声明的方法和属性,只能在本类中被调用,外部看不到.
public void AddIt(out int i)//公共方法,调用前需实例化
{
i = 100;//内部赋初值,外部赋值无效
i = i + 1;
}
private void AddIt(out int i)//私有方法,调用前需实例化,仅可在本类中调用,private 可省略
{
i = 100;//内部赋初值,外部赋值无效
i = i + 1;
}
public static void AddIt(out int i)//公共的静态方法,调用前不需实例化,类名直接访问
{
i = 100;//内部赋初值,外部赋值无效
i = i + 1;
}
private static void AddIt(out int i)//私有的静态方法,调用前不需实例化,类名直接访问,但外部类无法访问
{
i = 100;//内部赋初值,外部赋值无效
i = i + 1;
}
方法默认是私有的,所有private也可以省略,static void AddIt()和void AddIt();
C#: 静态方法,公有方法、私有方法;
<———————C语言extern与static回顾——————————
再想起了C里面的extern 修饰符,C#还没注意到;
http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html
只在头文件中做声明,真理总是这么简单
extern 可以引用别的.C文件中的全局函数或全局变量(extern修饰符默认省略);ps:如果只是引用某.c函数中的某个全局变量或全局函数时;
如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,此时extern 不能省略;
也可以把全局变量的定义和全局函数放在对应的.H文件中,这样调用时通过#include”xxx.h”引用;
C extern static 关键字 summary:
static修饰的全局变量声明与定义同时进行;
static修饰全局变量的作用域只能是本身的编译单元;
一般定义static全局变量时,都把它放在原文件中而不是头文件;
const单独使用时它就与static相同,而当与extern一起合作的时候,它的特性就跟extern的一样了;
const可以与extern连用来声明该常量可以作用于其他编译模块中, 如extern const char g_str[];
2017/10/28 12:48
————————————————————————————————>
2017/10/28 15:21
this 关键字:用于指示当前对象自己;
Main()函数
(1)main()函数的参数传递;
Win 7 下命令行切换目录 cd /d 其他盘符路径
(2)C# 调用C# DLL或EXE,方法和类名声明为public,
将生成的exe添加到C#引用路径,然后调用;
class Program
{
static void Main(string[] args)
{
int i = MainTest.Program.Main(new string[] { "a" });
Console.WriteLine("返回值为" + i);
i= MainTest.Program.Main(new string[] { "a" ,"b","c","d"});
Console.WriteLine("返回值为" + i);
}
}
(3) 非静态main函数;
修改main方法为非static类型,然后将mainTest生成DLL;
项目–>属性–>应用程序–>输出类型;将控制台修改为类库;
新建一个工程,调用DLL输出;
class Program
{
static void Main(string[] args)
{
MainTest.Program p = new MainTest.Program();
int i = p.Main(new string[] { “a” });
Console.WriteLine(“返回值为” + i);
i = p.Main(new string[] { “a”,”b” });
Console.WriteLine(“返回值为” + i);
Console.ReadLine();
//int i = MainTest.Program.Main(new string[] { “a” });
//Console.WriteLine(“返回值为” + i);
//i= MainTest.Program.Main(new string[] { “a” ,”b”,”c”,”d”});
//Console.WriteLine(“返回值为” + i);
}
构造函数2017/10/29 16:15
(1)构造函数的名称与类名相同;
(2)构造函数不能有返回值类型,void也不行;
static
当使用static时,通过类名和 . 来访问;
当未使用static时,通过类的对象和 . 来访问;
静态成员、静态方法;实例方法(没有使用static的方法);
静态构造函数:(所有对象实例化之前执行一次) 构造函数:(每次实例化执行一次) :
析构函数
委托
委托的作用:使用委托定义一个引用,然后用该引用指向所有与该引用具有相同方法签名的方法;并且可以通过该引用调用这些拥有相同签名的方法;http://www.runoob.com/csharp/csharp-delegate.html
2017/10/30 20:20
委托使用三步曲:
(1)声明委托 delegate
(2)实例化
(3)调用
委托类似C、C++里面的指针,C#将某个方法委托一个引用,然后用该引用调用具有相同签名的方法;
多播委托:当一个委托引用同时指向多个符合方法标示的方法时;
使用+= 来添加委托,使用-=来移除委托
http://blog.sina.com.cn/s/blog_6997f0150100u9cv.html