zoukankan      html  css  js  c++  java
  • 认识c#与.net的概念

    /// <summary>
    /// .net与c#的概念:
    /// .net/dotnet:一般指的是.NetFrameWork框架。net是一个平台(厨房里面什么都没有);框架就是一种技术(厨房需要的柴米油盐,工具等等);在平台上开发框架(这个就可以做出一道菜)
    /// .netframwork框架是.net平台不可缺少的一部分,它提供了一个稳定的运行环境保证我们基于.net开发的各种应用能够正常运转。
    /// c#编程语言:老外问路,他听不懂中国话,你需要一种说一种他听得懂的语言告诉他怎么走。然而计算机能听懂的就是编程语言。
    /// (学习java的使用的是java平台,语言也是java语言。所以常说java是一个平台也是一种编程语言。而学习net使用的平台是net平台,net使用的语言是c#语言。如果.net应用脱离了c#编程语言是无法运行的)
    /// C#(sharp):英文CSharp是一个强大的【面向对象】程序开发语言开发语言,是专为.NET开发而设计的一门语言,c#需要运行到.net提供平台的开发环境上,开发工具是vs(安装时里面同时安装好对应的框架版本)
    /// C#能为我们做的事情:1.桌面应用程序,2.web服务程序,3.Internet应用程序,4.Windows的服务程序。
    /// .net能干什么:桌面应用程序winform开发,Internet应用程序asp.net网站开发,手机开发wp8,unity3D游戏开发或者是虚拟现实。
    /// .net的两种交互模式:1.C/S:客户端Client/服务器Server(如:QQ需要安装一个软件);2.B/S:浏览器Browser/服务器Server(典型例子网站:客户端上只需要安装一个浏览器就可以访问)
    /// .NetFrameWork:微软推出的一个平台,c#支持的一些特性.net不支持,.net支持的一些特性c#又不支持,所以c#是.net的代码,但不是.net的一部分。

    ///  .NetFrameWork的组成(两个部分):1.基类库(FCL):综合面向对象可重用的一个集合(前辈们封装好的代码),可使用它开发多种应用程序。2.公共语言运行时(CLR):看做一个执行时管理代码的代理,于管理内存,线程执行,代码执行,编译等服务。
    /// .NetFrameWork代码编译过程,源代码执行要经过(二次编译):第一次编译由源码程序编译为“中间语言(MSIL)”,第二次编译在由中间语言编译成能够被CPU直接执行的“机器代码”;

    ///公共语言运行时:1.公共语言规范(CLS):详细说明了一个.net兼容编译语言的规则,属性和行为。2.公共类型系统(CTS):定义了那些在托管代码中一定会使用的类型特征。最重要的特效之一所有数据类型都继承至公共的基类--->Object类。

    ///相对Windows而已,做了以下改进:1.面向对象开发环境。2.自动垃圾回收器(如:CLR有一项服务垃圾收集,自动管理内存)。3.互操作性:允许不同的.net编写软件模块间无缝交互。

    ///4.简化部署:程序不需要注册表注册,只需要将程序复制到目标计算机上即可运行。5.类型安全。6.框架类库:在写程序时可以使用一些丰富代码库(前辈们写好的代码,需要时直接调用)
    /// </summary>

    //面向过程:这个程序里面的每个功能,这个功能的每一个实现步骤,都需要我们自己去完成。----------c语言就是面向过程语言
    //面向对象:给我们提供了一些已经打包好的函数和方法,我们需要这些功能可以直接通过调用来实现就可以了。至于这个功能如何实现的,不需要我们去关心。只需要会用就可以了----比如:C#,Java....

    //面向过程:面向的是完成这件事情的一个过程,强调的是完成事情的一系列动作。如:把对象放进冰箱里的一个过程。强调动作1.首先要打开冰箱门,2.在把大象放进去,3.最后关闭冰箱门。
    //假如张三去处理刚好能操作,而李四他太矮了没办法操作,需要借助凳子,才能把大象放进冰箱。
    //如果使用面向过程思想来解决问题,如果执行这件事情的人不同,我们就需要为每个人都去量身定做解决事情的方法。对应每个人代码都不同。
    //面向对象:找个对象不能做事情。意在写出一段通用代码,屏蔽差异。
    //如:冰箱可以被打开,大象可以被放进冰箱,冰箱门可以被关闭。不管是谁的可以做这件事情。
    //对象思维:在数学家眼里为马上理想到数字。程序员而言万物皆对象。
    //关门:面向过程是主动的:张三轻轻地把门带上了,李四一脚把门踹紧了。面向对象是被动的就一句代码解决所有人的关门:没可以被关闭。
    //对象的特征:对象必须是看得见摸得着的,我们描述一个对象,通常是通过对象的属性和方法去描述的。如钢笔是对象,属性(值):一只红色的钢笔,带图案的钢笔等等。方法(行为,执行的操作)
    //类(相当于设计图子):就是一个模板。把一些具有相同属性和方法的对象进行了封装,抽象出来 类 的这个概念。
    //对象(设计结果)对象是根据类创建出来的事物(先有类在有对象):人类,孙权是人类中的对象,属性就是,姓名,年龄,身高等等一系列特征,方法(行为,动作,执行的一系列操作):打仗等等。

    //类是对象的抽象形式(抽象的:想像出来的模板),对象是类的具体形式(通过模板创造出来的实实在在的对象):由类这个模板创造出来的对象一定是相似的,(如飞机图纸,怎么都只能创造出来不同的飞机对象) 

    using System;//using引入:为我们导入c#给我吗提供一些函数,或是现有的一些类;整体叫引入命名空间:命名空间就是namespace 项目名那个,这里的引入是c#给我吗封装好的命名空间
    using System.Collections.Generic;//引用了命名空间也就意味着可以使用这个命名空间下面的类。也就是说引用命名空间就是要使用他的类,不用就没有意义
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;//正则表达式方法Regex.Replace()所在的命名空间
    using System.Threading.Tasks;
    
    namespace CSharp //namespace 表示:命名空间,创建好一个下面后,会自动给项目创建一个命名空间,所以同一个命名空间下只能有一个入口Main函数 跨命名空间的使用就要 using引用命名空间
    {
        /// <summary>
        /// 类:对象的集合(实例化对象就是调用这个类使用他的方法函数,例子 实体类被调用的时候),对象:具有明确的状态和行为。
        /// 类是抽象的,对象是具体的。区别:类是对象的抽象形式,对象是类的具体形式。 比如:月饼膜拜是一个类,做出来的月饼就是一个对象
        /// </summary>
        class Demo2
        {
            /*访问修饰符
            public:公共的,所有程序集都可以访问(其他程序集访问需要引入命名空间才可以)
            internal:当前程序集可以访问
            protected:受保护的,当前类和子类可以访问,子类实例化对象时点不出来。但是可以访问。不会报错,相当于隐藏了属性。
            private:私有的,只能是当前类可以访问
            类的访问修饰符(两种):public internal(默认)
            类的成员访问修饰符(4种):public internal protected private(默认)
            */
    
            //静态的只能引用静态的,实例方法既可以引用静态的也可以引用实例的。
            public static string ussssn = "静态的static关键字";
            //调用:静态的不需要实例化对象直接可以通过 类名.成员() 就可以点出来, 普通成员调用:对象名.成员名 在调用前必须实例化对象
            //静态成员:属于整个类 (相当于所有对象共享), 实例成员属于当前所承建的对象(每个对象都有自己不同的特性的一个值,比如:实体类就不能是静态的)
            //区别:静态类不能被继承,非静态类可以。 静态类中所有成员必须是静态的,非静态类中不限制即可以是静态也可以是非静态的
    
            /// <summary>
            /// Main:一个程序的入口函数,不行有入口函数,不然程序找不到门;static 表示静态的方法 void表示没有返回值
            /// </summary>
            /// <param name="args">数组参数</param>
            static void Main(string[] args)//主方法在整个项目中有且只有一个。
            {
                Console.WriteLine("Console:表示控制台,Write:表示输出,Line:表示一行不需要换行就补加Line即可");
    
                //c#提供两种方式输出变量
                Random rd = new Random();//随机数因子,实例化对象:由类转换成一个对象的过程,关键字new 语法:类名 对象名 =new 类名(); 此时类就变成了一个具体的对象。
                int rrr = rd.Next(1, 10);//表示1-10的随机数, 访问类的成员:对象名.成员名来访问的
                const string st = "常量关键字const程序执行结束都不发生改变,只能被赋值一次,而且定义了就必须赋值,比如圆周率=3.14不会改变";
                Console.WriteLine("输出随机数:" + rrr);
                Console.WriteLine("占位符输出:{0},{1}", rrr, st);//如果多变量从{0}{1}...开始索引每个变量
    
                //foreach遍历
                string stss = " Hello this
     is
     a 	test";//转义字符/n是换行在苹果系统和控制台有用,但是打印到Windows系统文本里没效果的必须要
    才能换行。
                foreach (char itme in stss)//char是字符类型,每次只放一个字符;string类型不限制
                {
                    Console.WriteLine(itme); //打印出每个字符
                }
    
                /*转义字符
                 * 
    :表示换行,
    :Windows不认识
    只认识
     ,苹果系统认识
    
                 * 	:表示tab建的空格。:表示退格键,放在字符串两边没效果。":表示可以在字符串输出引号。
                 * \表示取消的转义作用输出一个路径的时候用,另外如果麻烦的换行@"字符串路径"就不需要添加只要在字符串前面加@符号,告诉双引号里面是字符串,字符串就会原样输出。
                 */
    
                Console.WriteLine(stss.StartsWith(" Hello"));//判断是否以Hello字符串开始
                Console.WriteLine(stss.EndsWith("Hello"));//判断是否以Hello字符串结束
                Console.WriteLine(stss.Contains("Hello"));//判断字符串中是否包含指定字符串,只要出现就返回true
                Console.WriteLine(stss.Equals("Hello"));//完全等价于关系运算符的 stss == "hello" 是否完全相等,返回true/false
                Console.WriteLine(stss.IndexOf("lo")); //索引小标位置, 类似于模糊查询,通常用作判断 stss.IndexOf("lo") > -1 表示索引不到值,不存在
                Console.WriteLine(stss.LastIndexOf("lo"));//和上面一样也是索引,返回的是最后一个出现的位置
                Console.WriteLine(stss.IndexOf("lo", 2));//从第二个下标开始查找
                Console.WriteLine(stss.Insert(2, "你好!"));//在第二个下标位置插入 你好
                Console.WriteLine(stss.Remove(2, 3));//删除字符串Remove(开始, 结束) 也可以只有一个开始下标 Remove(开始) 默认结束是最后。也就是开始后面的全部删除。
                Console.WriteLine(stss.Substring(2, 3));//截取字符Substring(开始,结束) 也可以只有一个开始下标 Substring(开始) 默认结束是最后。
                Console.WriteLine(stss.Replace("llo", "aaa"));//替换字符
                Console.WriteLine(stss.ToLower());//字符串转小写
                Console.WriteLine(stss.ToUpper());//字符串转大写
                Console.WriteLine(stss.Trim());//清楚字符串的左右两边空格
                Console.WriteLine(stss.TrimStart());//清楚字符串的前面空格
                Console.WriteLine(stss.TrimEnd());//清楚字符串的后面空格
                Console.WriteLine(Regex.Replace(stss, @"s", ""));//利用正则表达式清楚字符串所有空格
                
                //用法
                string url = "http://www.baidu.com/index.html";
                Console.WriteLine("网址中的协议是:" + url.Substring(0, url.IndexOf(":")));
                Console.WriteLine("网址中的协议是:" + url.Substring(url.LastIndexOf("/") + 1));
                if (!string.IsNullOrEmpty(stss))//判断字符串释放有值,可以可以判断空值null或者“” ,这里判断字符串是否为空,加!表示非空。
                {
                    string[] arr = stss.Split(' ');//拆分字符串,以空格拆分 
                    Console.WriteLine("arr数组长度为:{0}", arr.Length);//同样字符串也有长度
                    foreach (string itme in arr)
                    {
                        Console.WriteLine(itme);
                    }
                    Console.WriteLine(string.Join(":", arr));//把一维数组里面的值链接成字符串
                }
                Console.ReadKey();
                Console.ReadLine();//利用接收输入来暂停程序,避免程序一闪而过
    
                //Ctrl+J快捷键能够打开代码提示框
            }
    
        }
    }
  • 相关阅读:
    IIs和ftp
    java中HashMap重要性质和优化总结
    深入理解mysql的left join(真的很深入)
    windows bat批处理语法简析
    遍历hashMap的两种方式
    Java开发实践 集合框架 全面分析
    MySQL中日期与时间类型
    CentOS6.5下Redis安装与配置
    查看redis进程
    Web阶段:第七章:Tomcat服务器
  • 原文地址:https://www.cnblogs.com/longxinyv/p/14396026.html
Copyright © 2011-2022 走看看