[AaronYang]C#人爱学不学[1]

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的拓展方法,这些常规的,没说了

时间: 2024-11-01 00:02:40

[AaronYang]C#人爱学不学[1]的相关文章

[AaronYang]C#人爱学不学[6]

不要回头,不要将就,做到这两点,人生就会简单很多幸福很多 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 运算符,还有哪些你能学到? 1.1 不安全运算符: sizeof(.net framework1.0和1.1中的).*.-> .& 1.2 checked和unchecked运算符:溢出异常控制运算符 byte类型只能0-255的数,超过就会导致溢出.执行溢出检查用checked,禁止溢出检查用unchecked. 1.3 类型信息运算符:sizeo

[AaronYang]C#人爱学不学[4]

本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的知识,也是为了方便自己更好的记忆C#知识.文章内容都是自己总结,无抄袭,如果你觉得文章档次太低,请大牛绕道 --Aaronyang的博客(www.ayjs.net) 1. 泛型-是C#的泛型 1.1 性能方面比非泛型好点,比如拆箱装箱的问题.个人感觉代码可读性更好吧.还有就是 写代码可能可以写出很精

[AaronYang]C#人爱学不学[3]

本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的知识,也是为了方便自己更好的记忆C#知识.--Aaronyang的博客(www.ayjs.net) 1. 继承-的疑虑 1.1 一个类,只有一个父类,可以实现多个接口,还要注意顺序 一个结构,没有父类,可以实现多个接口 接口可以继承多个接口,子类必须全部实现 public class myclass

[AaronYang]C#人爱学不学[5]

这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书 --Aaronyang的博客(www.ayjs.net) 1. 数组-的疑惑? 1.1  多维数组       例如int[,]  a=new int[2,4]; 共两行,每组4个.     int[,] a={{1,2,3,4},{6,7,8,9}} 1.2  锯齿数组       例如int[][] a=new int[2][];可以确定一共2行,但每行几个不知道,所以可以任意个.导致每行的长度可能不一

[AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]

没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. 自定义事件:自定义一个类,继承EventArgs 使用泛型委托EventHandler<T>,本质:public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e) where  TEventHandle

[AaronYang]C#人爱学不学[7]

做一个决定,并不难,难的是付诸行动,并且坚持到底 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 委托-我的总结 1.1 委托:面试我都会说,把方法当参数.委托包含的只是一个或多个方法的地址. 示例1:(一次执行多个同方法签名的方法) /* *2015年1月3日23:12:13 aaronyang *网址:www.ayjs.net www.8mi.me */ using System; using System.Collections.Generic; us

我是一个有点内向爱思考的人,学IT有一年时间了

我是一个有点内向爱思考的人,学IT有一年时间了.我主要是学php,asp这方面html,js,css,sqlserver,c#,mysql个人数据库 也都学了一些,我的优势是在学习期间做过和同学一起完成的商城网项目:“京东商城“,期间让我认识了网站架构模板和后台的强大也积累了不少做这类项目的经验.我对编程语言理解深刻,有很深的编程思想,自学能力强(属于实力派). 我的能力总结: 1.对微软系统的产品有较长时间的操作经验,3年的C#开发经验,项目包括公司进销存软件,人事管理软件以及公司年终抽奖软件

我这种人都学得了编程,你呢?

我这种人都学得了编程,你呢? 声明,我也是在学习中,如果看得起可以跟我一起学习! 先自我介绍一下吧,给没信心的朋友找找信心! 今天是2014年5月7日,正在上初三,还有一个月的时间就初中毕业了. 很多人都认为自己学历不够,英语不好想学但是又不敢学.很多人都认为我很聪明,学习很棒. 其实不是,我都不好意思说我这次月考,考了全级800多名,全级才850多人.初中三年我大概睡了一年的觉,我这种人都能学了编程你呢?? 如果你真的对编程有兴趣就开始学吧,很多教程里都说兴趣是最好的老师,我感觉这句话一点都没

什么样人适合学平面设计?零门槛入门工具收藏

有很多人问我,什么人适合学平面设计.我想告诉大家,喜欢是基于爱好,况且是互联网时代,一些基本的制图和素材审美,在日常工作中会提升我们的格调,找到属于自己的风格.没基础没有关系,今天小编安利给大家一款超简单的菲果在线设计工具,也能让零基础的你迅速上手. 选择菲果的六大原因 一.6大场景,46个分类菲果设计提供6大场景的平面模板,包括广告印刷.网络媒体.办公文档.电商促销.卡片.生活,这些是大家平时最常用的场景.6大场景又可以划分出46个垂直分类,比如微信公众号文章首图模板适合新媒体人使用,比如淘宝