一、Serialization序列化
serialization Rules
1、避免structs;2、在需要序列化的类里面需要标明[Serializable];
3、在public作用域内一旦声明Serializable,那么整个public区域都被序列化,不管public 有多长;
4、private作用域会在一些编辑者规定的条件下序列化;
5、如果private区域需要序列化,需要声明[SerializeField];
6、不需要序列化的地方需要声明[NonSerialized];
二、C#命名空间
1、同一个命名空间可以分散在多个文件中;
2、位于任何命名空间之外的语法元素都被认为是放在匿名全局命名空间中的;
3、命名空间可以多级嵌套;
三、锱铢
1、C#没有头文件,因为C#不允许把类的声明和定义分开;
2、C#是一种强类型语言,意味着每个对象有且只有一种类型。这个类型在对象创建时就已经完全定义,并在对象执行期间保持不变。
3、C#中的所有变量使用之前都必须初始化,否则编译器会在初始化时产生一个编译错误。
四、Hello World !
每学一门语言,都会先打出这句话。约定俗成,程序员的风格。那么hello, world到底从何而来?这里闲扯一下。
hello world的起源要追溯到1972年,贝尔实验室著名研究员Brian Kernighan在撰写“B语言教程与指导(Tutorial Introduction to the Language B)”时初次使用(程序),这是目前已知最早的在计算机著作中将hello和world一起使用的记录。之后,在1978年,他在他和Dennis Ritchie合作撰写的C语言圣经“The C Programming Language”中,延用了“hello,world”句式,作为开篇第一个程序。在这个程序里,输出的”hello,world”全部是小写,没有感叹号,逗号后有一空格。虽然之后几乎没能流传下来这个最初的格式,但从此用hello world向世界打招呼成为惯例。
上代码——
#region
#define T
#define _Fun_
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSTest
{
class Program
{
[System.Diagnostics.Conditional("_Fun_")]
[System.Diagnostics.Conditional("T")]
public static void T(string s)
{
global::System.Console.WriteLine(s);
}
public static void Fun(string s)
{
T("dddddddd");
global::System.Console.WriteLine(s);
}
static void Main(string[] args)
{
Fun("aaaaaaa");
global::System.Console.WriteLine("hello, world");
global::System.Console.ReadLine();
}
}
}
#endregion
知识点分解:
1、#region和#endregion的用法在于可以使一部分代码块折叠和展开,是一种小技巧;
2、[System.Diagnostics.Conditional("_Fun_")] 用于使函数按照常量定义来调用。但是有限制条件,就是函数返回值必须是void。
好处在于如果需要修改宏定义的部分不必一个一个的去注释代码,因为如果常量所代表的函数没有实现的话也不会产生错误。conditional是按照函数的实际意义编译的。
3、global:: 用于区分命名空间的别名。
4、Main函数必须是静态的,而且首字母需大写。这点于c/c++略有不同。