[AaronYang]C#人爱学不学[2]
1. 记事本写C#,脱离vs
新建记事本,名字为 helloworld.cs
using System; namespace Hello{
public class HelloWorldSay{
static void Main(){
Console.WriteLine("你好,世界");
Console.ReadLine();
return;
}
}
}
简单的使用csc命令编译:
我的目录在:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat
输入命令:csc /out: 输出目录及文件名(.dll或者.exe) 源代码文件
csc /out:F:\net\2014年12
月25日003728\helloworld.exe F:\net\2014年12月25日003728\helloworld.cs
常用的还有csc /t:library 源代码文件 编译成dll
csc /t:exe 源代码文件 编译成exe
csc /t:module 源代码文件
csc /t:winexe 源代码文件
/r用来指定引用的dll
源代码主入口文件可以是 *.cs表示编译文件夹下的所有cs文件
或者生成xml文件-》 csc 源代码文件 /doc:路径+文件名.xml
或者/main:指定哪个方法作为程序的入口点
当然还有其他形式,不具体介绍了,虽然你看似没用,但是 举个实际案例:项目持续发布软件,都是自己拉取svn代码,然后自动编译,或者网页上开发人员自己点编译,现在觉得还没用吗?
2.值类型和引用类型,拆箱与装箱我认为更好的解释,struct的局限
这两种数据存储在内存的不同的地方。值类型存储在堆栈中,存储值,而引用类型存储在托管堆上,简称堆上,存储引用地址。
拆箱与装箱的本质:值类型在转换到System.Object时引发的堆栈和堆的一系列的移动操作。装箱:值类型从堆栈上被复制到堆上,而拆箱时从堆上复制到堆栈上。所以对性能有影响
下面看个 ay=null 说明 ay是个引用类型,表示它不引用任何对象
除了众所周知的一些类型,重点讲下 struct 值类型 和class引用类型
结构可以拥有属性和方法,但没有继承可言,结构可以重写System.Object的虚方法,但不能定义新的虚方法或者抽象方法。不能拥有无参构造函数,也不能为成员变量定义初始值。但性能好,class的功能更多。
类和结构实际上是创建对象的模板。
3.更了解CTS
3.1列举一些值类型
1.整型(从位数少到多排列 8,16,32,64) 有符号(sbyte,short,int,long) 无符号(byte,ushort,uint,ulong),它们每个都对应了CTS中的一个类型,例如long 对应System.Int64
2.浮点(从位数少到多排列 32,64) float(CTS:System.Single) 32位单精度浮点数 double(CTS:System.Double) 62位双精度浮点数,例如 float ay=12.3F,double ay1=12.3E2,E2代表10的指数是2,就是12.3乘以10的2次方
decimal (CTS:System.Decimal) 128位高精度十进制数表示法,数字后面加M表示Decimal
3.bool (CTS:System.Boolean)
4.Char (CTS:System.Char) 16位的(Unicode)字符
5.枚举Enum
3.2列举一些引用类型
object,string等
这里的string很特殊,是个引用类型,比如2个string 同时引用一个string地址,当s1修改值时候,s2没有变化,因为修改一个字符串,就会创建一个全新的string对象,不信可以运行下面例子。string是比较特殊的引用类型,本质上是运算符重载的结果
string s1 = "s1";
string s2 = s1;
Console.WriteLine(s1);
Console.WriteLine(s2);
s1= "newS1";
Console.WriteLine(s1);
Console.WriteLine(s2);
Console.ReadLine();
效果:
4.C#跳转语句,除了break,continue,return还有goto
goto 不只是跳转到指定标签,还可以用在switch case中,跳转到指定case里面
跳标签的方式,这里不讲了。
4.命名空间的 :: 双冒号(全局作用符)
都知道可以 互相嵌套namespace,给namespace起别名操作,双冒号提下吧
这里的::效果等同于 点号,但是我没说就是点号的替代品。
4.C#的预处理器命令
你肯定用过,例如 #region #endregion
1. #define 和#undef 例如 #define DEBUG,经常与其他预处理器结合使用。
2.同样C#还包括很多,例如#if #elif(等于 else if ) #else #endif,例如 #if DEBUG #endif 表示 如果项目在DEBUG模式下,就执行下面的代码.
3.#warning "警告测试" #line #pragma
5.你可能不知道的 冒号方式调用带默认值的方法(.net framework4.0 +)
6.属性中,是可以增加访问修饰符的
7.静态构造函数的脾气
static 类名{}
不能有访问修饰符,静态构造函数至多运行1次。即在代码引用类之前调用它。
不能带参数,一个类也只能1个静态构造函数。只能访问类的静态成员,不能访问类的实例成员。
他可以与无参数的构造函数共存。在静态构造函数里可以给外部的static readonly字段赋值
构造函数提供了构造函数初始化器,使用this或者base调用。
例如 public A(string des):base(des,4){}
8. WeakReference弱引用与默认的强引用
9. 本章跳过的部分的,你可能想了解的关键字:readonly和const、ref与out,部分类,深复制与浅复制(如果复制完类,如果类中引用了其他类,他只是一个地址,没有复制。最终复制完的对象的地址再返回),GC垃圾回收,C#4.0的拓展方法,这些常规的,没说了
[AaronYang]C#人爱学不学[2]的更多相关文章
- [AaronYang]C#人爱学不学[1]
当前编写时间:2014年12月24日21:11:14 编写人:杨洋(Aaronyang) 新文章:[AaronYang]C#人爱学不学[1] 声明:->可以理解为 联想到,或者关联的意思. ...
- [AaronYang]C#人爱学不学[6]
不要回头,不要将就,做到这两点,人生就会简单很多幸福很多 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 运算符,还有哪些你能学到? 1.1 不安全运算符: si ...
- [AaronYang]C#人爱学不学[4]
本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...
- [AaronYang]C#人爱学不学[3]
本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...
- [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]
没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. ...
- [AaronYang]C#人爱学不学[5]
这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书 --Aaronyang的博客(www.ayjs.net) 1. 数组-的疑惑? 1.1 多维数组 ...
- [AaronYang]C#人爱学不学[7]
做一个决定,并不难,难的是付诸行动,并且坚持到底 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 委托-我的总结 1.1 委托:面试我都会说,把方法当参数.委托包 ...
- AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享
原文:AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...
- AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享
原文:AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...
随机推荐
- [分享]一个String工具类,也许你的项目中会用得到
每次做项目都会遇到字符串的处理,每次都会去写一个StringUtil,完成一些功能. 但其实每次要的功能都差不多: 1.判断类(包括NULL和空串.是否是空白字符串等) 2.默认值 3.去空白(tri ...
- poj 2391 Ombrophobic Bovines(最大流+floyd+二分)
Ombrophobic Bovines Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 14519Accepted: 3170 De ...
- redis master配置了密码进行主从同步
1.如果master不设置密码,那么直接在slave服务器配置slaveof即可 配置如下 #slaveof ip 端口 slaveof 配置好我们看下redis的日志 看是否同步成功 :S Jan ...
- jQuery选择器简单例子
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="jQuery_5.aspx. ...
- Java之美[从菜鸟到高手演变]之JVM内存管理及垃圾回收
很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确 ...
- 手把手教你如何用ZBrush刻画脸部
今天的ZBrush教程我们将参照一张效果图对模型进行脸部刻画.在进入课堂之前我们有必要对Layers层概念和操作有所了解,然后结合之前学习的雕刻笔刷对模型的特征表情给予重点刻画. 详细的视频教程地址请 ...
- 边工作边刷题:70天一遍leetcode: day 85-2
Paint Fence 要点: 这题是求number of ways,如果是相邻不相同颜色,那么就trivial了:k*(k-1)^(n-1).所以这里no more than two adjacen ...
- webpack htmlWebpackPlugin 静态资源 版本控制
plugins: [ new webpack.optimize.UglifyJsPlugin({ // 压缩webpack 后生成的代码较长时间,通常推到生产环境中才使用 compress:{ war ...
- UIImageJPEGRepresentation和UIImagePNGRepresentation
UIImageJPEGRepresentation方法在耗时上比较少 而UIImagePNGRepresentation耗时操作时间比较长 -(void)imagePickerController:( ...
- Xcode7 真机调试步骤以及遇到的问题解决办法
打开Xcode7,打开preference 添加自己的apple ID登陆上去 打开一个自己的想要运行在真机上的项目 插上自己的iPhone真机(真机没必要是最新的系统,没必要升级,我刚开始报错以为是 ...