合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# 1、DataSet xx :离线资料库 # 2、DataReader:连线资料库 # 3、事件托管:(object sender, EventArgs e) 前面的object用来传递事件的发生者,后面的EventArgs用来传递事件的细节 https://zhidao.baidu.com/question/107479680.html?qbl=relate_question_3 # 4、命名规则 ``` namespace M1 { public class C{} } ``` 可以表达成M1.C # 5、新建project时候一般选择console solution # 6、常量和变量 常量: 编译时常量const 需要一开始就赋值,如果是运行时常量readonly,则可以在运行时候在g构造函数中再赋值。 ![](https://box.kancloud.cn/272b2ea53d818aa15d5c4df13e1f1fc9_693x277.png) ``` using System public class Program { const abc = 900; //设定名叫abc的常量,值是900。常量类型一般用const表示 static void Main(string[] agrs) { Console.WriteLine("常量abc的值是:{0}", abc); //这里{0}必须写,否则出错 } } ``` ![](https://ws4.sinaimg.cn/large/006tNc79gy1fojsyrjd4jj30jo08v0tz.jpg) ## 变量类型 ![](https://ws3.sinaimg.cn/large/006tKfTcgy1fr387u21m8j31hc0u0mzd.jpg) ## 变量的作用域 ![](https://ws2.sinaimg.cn/large/006tKfTcly1fr3kx174cwj31kw0w0kjl.jpg) 类体 => 成员变量 - 实例变量 `string x = "hello"; ` 实例变量只属于某个对象实例,所以调用时候需要先创建实例。 - 静态变量 ` static string x = "hello"; ` 静态变量是属于一整个class 类的 两者的区别:如果输入了`static ` 变量以后,则我们可以在该类的 static void main() 中直接调用 > 局部变量如果在外部用?没其他办法,最简单的就是直接加一个static ``` class Program() { static string x = "hello"; static void Main() { Console.WriteLine(x); } } ``` 如果是用了实例变量,那么我们必须先用 Program 创建对象,否则会提示: CS0120 C# An object reference is required for the non-static field, method, or property 对象引用于非静态的字段,方法或属性“Program.x”是必须的 ![](https://ws3.sinaimg.cn/large/006tKfTcly1fr3klr0lhaj30il0du0uf.jpg) 正确做法如下: ``` class Program() { string x = "hello"; static void Main() { Program p = new Program(); Console.WriteLine(p.x); //注意这里括号里面写的是对象名p,而不再是变量名 } } ``` ![](https://ws1.sinaimg.cn/large/006tKfTcly1fr3krg8e52j30is0b8dhc.jpg) ## 转义字符 ![](https://ws2.sinaimg.cn/large/006tKfTcgy1fr387uu9goj31hc0u0gp3.jpg) ![](https://ws3.sinaimg.cn/large/006tKfTcgy1fr3878tn7tj31hc0u0diy.jpg) # 常量——一般常量名都大写 ## 编译时常量,用const表示 需要初始化值,如`const int PI=3.14;` 一开始就定义,与顺序无关。 ## 运行时常量,用readonly 表示 可定义时直接赋值,也可以借助Program()来执行。不能定义在具体对方法中,只能定义在类里面,或者是在构造函数Program里面初始化,其余不行。是一行运行的,所以有顺序。 ``` class Program() { readonly int Price; Program() { Price = 365; } static void Main() { ……; } } ``` > 注意,如果是readonly时,那么代码是一行行读取的。 > 这时候如果先写了price3=price4*\2,再写Price4 = 55,那么price3的值只能是0。 ![](https://ws2.sinaimg.cn/large/006tNc79ly1fr7sgtp4vgj30a304yjrr.jpg) ![](https://ws4.sinaimg.cn/large/006tNc79ly1fr7sdhizemj30j50cg0vh.jpg) # 运算符 ## 赋值运算 用=表示。 如k=5 ## 关系运算符 `==, !=, <, >, <=, >= ` 等。但关系运算符不能连用。比如 ` console.writeline(a<b<c); ` 提示输出错误。因为系统是从左到右判断。先执行了a<b以后得到到是bool类型的值,再执行bool<c的判断,就会发生错误。 这时候可以用a<b && b<c; 即可 ## 位运算符 作用的对象是二进制数。 比如:&、|、^、~ - 位与运算`&`,两个数都是1,才返回1。如`1 & 0`,返回0。 - 位或运算`|`,只要有一个是1,就返回1。如`1 | 0`,返回1。 - 位异或运算 `^`,两个都是0,或者两个都是1,则返回0,否则返回1。如`11 ^ 10`,返回01。 - 位取反运算`~`,把0变成1,把1变成0即可。 ![](https://ws4.sinaimg.cn/large/006tNc79ly1fr8b44qddhj30j00b8wgg.jpg) 上述例子中用到了convert.toint32 ## 移位运算 `<<` 左移位 数字转换成二进制以后,最左边到数(高位数)被移出去舍弃,右边的数补充0。也就是等于原来的数✖️2的n次幂。比如移2位就是原来数✖️2²。 `>>` 右移位 左边被填充进来。需要注意的是,如果是负数,那么填充的是1,如果是正数,那么填充的是0,相当于÷2的 n 次幂。 ![](https://ws2.sinaimg.cn/large/006tKfTcly1fr8bgto0xtj30fy0913zg.jpg) ## 条件运算 语句为 xxx?xxx:xxx。条件运算不能直接作为一句c#语句,而要定义一个变量来接收它的值。例如下面的result 但一般用sting result 写 ``` static void Main() { int num = 50; string result = num>40?"is true":"is false"; console.writeline(result); console.readline(); } ``` 嵌套使用: **从右向左执行** 例如 ``` static void Main() { int x = 5, y = 6, a = 1, b = 2; int z = 0; z = x > y ? x : a > b ? a : b; Console.WriteLine(z); Console.ReadLine(); } ``` ![](https://ws4.sinaimg.cn/large/006tKfTcly1fr8nggia72j30hs09hjsl.jpg) # 7、 ``` using System; namespace MyApp { class MyApp { static void Main(string[] agrs) { int a1 = 25; int b1 = 30; Console.WriteLine("{0} + {1} = {2}", a1, b1, a1 + b1); //这里{0}, {1}, 是因为main中定义了(string[] agrs), 是个数组类型,所以默认 a1存放到数组的第一个 } } } ``` # 8、if null 创新和异常 `throw`字段 ``` if ( value == "") { throw new ArgumentException() } ``` # 9、new new:关键字实例化 比如 struct Book { } # 10、字符转换 ## 隐式类型 默认一些类型可以互相转换,比如char类型可以转换成double int float类型。但bool类型只有true false两种结果,所以不能跟数值类型互相转换。 ## 显式类型(强制类型转换) 1. 直接加(类型名) 把高精度转换为低精度的时候需要显式类型转换。比如直接加一个(int),注意这里有括号。 ``` int b = (int)10.2 ``` ![](https://box.kancloud.cn/d26ad2913c23b661b5881f6b8961d156_676x543.png) 2. 或者用convert.to转换,这个类是.net自带的类。应用最多!如: ``` double a = 10.5; int c = convert.toint32(a); ``` 3. 用类型名.Parse(表达式),但只能针对数值类型。所以暂不用 ``` double a = 10.5; int c = Int.Parse(a.ToString()); ``` # 11、运算符优先级和结合性 ![](https://box.kancloud.cn/4c86b5244d7d891287fd32cd48984f5d_1001x555.png) 表格中从上到下变低。 ![](https://box.kancloud.cn/aa25b5129ab276e263a5e10bfee6c8a0_979x459.png)