【2015.08.11】C#学习笔记

  1. 对象的要素:属性、方法、事件,Timer对象的事件是Tick
  2. 注册事件使用运算符+=,撤消注册-=
  3. +可以表示 算法的加法、正号、字符串连接、注册事件(+=)
  4. 优先级:算术>关系>逻辑>三目>赋值
  5. bool只能为true或false,不能与数值隐式转换
  6. &&是条件与,也叫短路与。 ||表示条件或 ^是表示异或
  7. 按惯例,C#中的属性、方法、事件的首字母都大写
  8. string是引用类型,int占4个字节(System.Int32)
  9. 声明数组时不可以声明数组长度,必须在定义时使用指定每一维大小。
  10. 定义数组时必须定义每一维的长度,int[,] = new int[1,1];
  11. 交错数组使用Type[,] = new Type[x,y](交错数组实际上是数组的数组,即多维数组)
  12. 二维数组的第一维的大小可以使用GetLength(0)
  13. 数组在new时,其元素会默认初始化
  14. switch语句中,一般情况下每个case都有break。不可跨case
  15. enum本质是上符号化的整数
  16. 字段与方法都要放到类中,不能独立于类之外。
  17. this 是对象,不是指针,后面用.符号来访问其成员而不是->
  18. 构造方法不能写返回类型
  19. static本质上与this是对立的
  20. const编译时确定。readonly仅可赋值一次(由构造函数完成)
  21. abstract类不可实例化,一般都是用来被继承的,但可以有构造方法
  22. interface中的方法自动就是public的,而且是abstruct的,一般用于表示某种特征。命名习惯用字母I开始
  23. 一个类只能继承一个父类,但可以继承多重接口。(如果有父类必须写在继承列表第一个)
  24. 所有的对象都有ToString()方法
  25. 判断一个对象是不是某个类的实例,使用运算符is
  26. internal是基于程序集的访问控制
  27. sealed表示不能被继承
  28. 在catch异常时,子类异常(更具体的异常)在写到父类异常(更一般的异常)的前面。
  29. 自定义异常要从Exception(或其子类)进行继承
  30. Attribute在使用时用方括号
  31. C#中是可以使用指针的,但是要慎用,且只能在unsafe中使用
  32. 在C#2以上的版本中,可以这样写:MyDelegate d2 = obj.myMethod;
  33. 委托具有多播的特点,即一次可以调用多个函数
  34. 运算符本质上是一个函数,但是书写起来更直观
  35. internal修饰符是针对程序集的可访问性
  36. 匿名函数可以不带参数,使用Delegate(){}
  37. 如果try块后有finally子句,不论是否有异常,最终都会执行finally块
  38. C#可以实现函数的函数(高阶函数)
  39. 在C#中,(省略new EventHandler)可以简写为:button1.Click += button1_Click;
  40. 在C#中,要注意还有运算符也都是函数
  41. Lambda本质上是一种匿名函数,(object sender, MouseEventArgs e) => { lbl.Text = e.X + “,” + e.Y; }
  42. Lambda可以省略参数类型,(sender, e) => { lbl.Text = e.X + “,” + e.Y; }
  43. Lambda可以没有参数列表,() => { Console.Write(“my function”); }
  44. 声明委托public delegate ReturnType DelegateName(args…)。然后使用new DelegateName(FunctionName)实例化委托
  45. 运算符重载 public static Complex operator - (Complex c1)

自定义Attribute

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

public class HelpAttribute : System.Attribute
{
public readonly string Url;
private string topic;
public string Topic // 属性 Topic 是命名参数
{
get
{
return topic;
}
set
{
topic = value;
}
}
public HelpAttribute(string url) // url 是位置参数
{
this.Url = url;
}
}
[HelpAttribute("http://msvc/MyClassInfo", Topic="Test"),
Help("http://my.com/about/class")]
class MyClass
{
[Help("http;//my.com/about/method")]
public void MyMethod(int i)
{
return;
}
}

日期相减得到TimeSpan对象

常用库

Color.FromArgb(R,G,B) 表示颜色
Random.Next(MAX) 随机数
int/double.Parse()解析实数
int.TryParse(string, out int)不会抛出异常
as 不抛出异常## 标题文字 ##
数组可以通过Length属性获取长度
object等价于System.Object
int等价于System.Int32
System.Convert.Toxxx

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

请我喝杯咖啡吧~

支付宝
微信