C#—代码理解知识点(一)

简介: 有上面的代码之后就不得不上传上上面这个图片了,这是我们刚开始学习C#接触的第一个程序,虽然只是一个简单的输出“Hello World"程序,却带给我了我们这么多的知识以及如此规范的模版!

  C#视频看完好几天了,却迟迟没有总结,因为感觉到视频上讲的东西太乱了(借口),也可能是自己做的笔记太乱了,在看视频的过程中没有太大的收获,也问过师傅,C#对于我们以后的学习是很基础的东西,一定要好好学,于是想到了一个办法,将视频上所有的代码无论大小都敲了一遍,在敲的过程中遇到了好多的问题,对于C#的认识也深刻了许多,今天终于想到如何做总结了,以我敲的代码为主线,将涉及到的知识带出来,进行整理总结。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第二节,Hello World程序
namespace Notepad
{
    class HelloWorld
    {
        public static void Main()
        {
            Console.WriteLine("HelloWorld");
        }
    }
}</span></span></span></span>


  20141207131520962.png


   有上面的代码之后就不得不上传上上面这个图片了,这是我们刚开始学习C#接触的第一个程序,虽然只是一个简单的输出“Hello World"程序,却带给我了我们这么多的知识以及如此规范的模版!


   另外还有一些基本知识需要添加:


     1.C#与C一样是大小写敏感的(命名的时候一定要注意大小写)。


     2.添加注释://格式、///XML注释(注释就好比人与人之间沟通的桥梁)。


     3.配对编程,比如”/**/“、()、{}(这个不太明白什么意思)。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第二节,控制台输入值并返回值   console.Read()方法
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //从控制台窗口读取一个输入流,并把流中下一个字符作为int返回
            //int x = Console.Read();
            //Console.WriteLine((char)x);
            //从控制台窗口读取一个输入流,并把整行文本作为一个字符串返回
            string s = Console.ReadLine();
            Console.WriteLine(s);
        }
    }
}</span></span></span></span>

20141207165013418.png

 

   以上是控制台中运用的一个代码,知识如下:


     1.读写控制台窗口的方法实际上是由.NET类提供的,而不是C#语言内部的方法。


     2.System.Console类提供了两个写入控制台窗口的方法(Console.Write和Console.WriteLine)和两个读取控制台窗口的方法(Console.Read和Console.ReadLine)其中Write和Read是读取或写入下一个字符,而WriteLine或ReadLine是读取或写入下一行字符。


     3.C#数据类型对比以及说明表,自己存一份,用到的时候不太明白就拿出来看看吧,如上图。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第二节,输入计算的值
namespace Shuchu
{
    class Shuchuzhi
    {
        static void Main()
        {
            int i = 10;
            int j = 20;
            Console.WriteLine("{0}+{1}={2},{3}", i, j, i + j, j - i);
        }
    }
}</span></span></span></span>


   这个例子主要强调一下:{0}、{1}、{2}、{3}各自对应后面的i、j、i+j、i-j,它是从零开始的。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第二节,转换类型之间的消耗
namespace _02_03
{
    class class_02_03
    {
        public static void Main(string[] args)
        {
            float x = 3.13159f;
            double y = 3.14159265358979;
            Console.WriteLine("x = {0}", x);
            Console.WriteLine("y = {0}", y);
            float t = x;
            x = (float)y;
            y -= t;
            Console.WriteLine("x = {0}", x);
            Console.WriteLine("y = {0}", y);
        }
    }
}</span></span></span></span>


   这个例子讲解了类型之间转换的损耗,我的理解,在转换过程中它们的范围是不同的,所以在不同类型的转换过程中必然需要将数据大约计算,从而使得此类型数据符合转换后的类型数据。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第三节,enum枚举
namespace p3_5
{
    class enumsample
    {
        public static void Main()
        {
            weekday wl;
            wl = weekday.Monday;
            Console.WriteLine(wl);
            wl = wl + 1;
            Console.WriteLine(wl);
            //输出第几个
            wl = (weekday)4;
            Console.WriteLine(wl);
        }
        enum weekday
        {
            Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
        }
    }
}</span></span></span></span>


   知识点:枚举比使用无格式的整数的优势


     1.枚举可以使代码易于维护,有助于确保给变量指定合法的、期望的值。


     2.枚举使代码更清晰,允许用描述的名称表示整数值。


     3.枚举使代码易于键入。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第四节,checked和unchecked运算符
namespace checkedunchecked
{
    class checkedunchecked1
    {
        public static void Main()
        {
            //溢出,输出结果为0,错误
            byte b = 255;
            b++;
            Console.WriteLine(b.ToString());
            //显示错误溢出的位置
            //byte b = 255;
            //checked
            //{
            //    b++;
            //}
            //Console.WriteLine(b.ToString());
            //byte b = 255;
            //unchecked
            //{
            //    b++;
            //}
            //Console.WriteLine(b.ToString());
        }
    }
}</span></span></span></span>


   此代码中的checked 关键字用于对整型算术运算和转换显式启用溢出检查,并输出错误的位置。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第四节,is运算符
namespace is2
{
    class is1
    {
        public static void Main()
        {
            int i = 10;
            if (i is object)
            {
                Console.WriteLine("这是一个object对象");
            }
        }
    }
}</span></span></span>


   此代码主要介绍了is( is就是处于对类型的判断)运算符的用处。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章第四节,sizeof获取类型位数,(unsafe,属性,生成,允许不安全代码)
namespace sizeof2
{
    class sizeof1
    {
        public static void Main()
        {
            string s = "A string";
            unsafe
            {
                Console.WriteLine(sizeof(int));
            }
        }
    }
}</span></span></span>


   此代码用sizeof可以查看类型的位数(注:此代码有可能报“不安全代码”的错,将此应用程序的属性打开——〉生成——〉允许不安全代码前打勾,错误就消除了)。


<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">//第一章,第五节,流程控制语句
namespace if1
{
    class if2
    {
        public static void Main()
        {
            if流程控制语句
            //int inta=9,intb=6;
            //if (inta > intb)
            //    Console.WriteLine("没有错inta大于intb");
            //else
            //    Console.WriteLine("错误");
            switch流程控制语句
            //int inta = 9;
            //switch (inta)
            //{
            //    case 5:
            //        Console.WriteLine("等于");
            //        break;
            //    case 6:
            //        Console.WriteLine("有点写了");
            //        break;
            //    default:
            //        Console.WriteLine("都不是那就是我的了!");
            //        break;
            //}
            //流程控制,循环for语句
            //for(int a = 0; a < 100; a++)
            //{
            //    Console.WriteLine("您输出的是{0}",a.ToString());
            //}
            //九九乘法表,注意运用Console.WriteLine
            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("{0}*{1}={2} ", i, j, i * j);
                }
                Console.WriteLine();
            }
            //while循环语句
            bool mywhile = true;
            while (mywhile)
            {
                Console.WriteLine("这是一个死循环!");
            }
            //do...while循环语句
            bool mywhile = true;
            do
            {
                Console.WriteLine("我是先执行再判断!");
            } while (mywhile);
            //foreach循环
            int[] ints = { 1, 2, 3 };
            foreach (int temp in ints)
            {
                Console.WriteLine(temp);
            }
            // 用break退出,for、foreach、while或do while
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("请输入一个语句(输入end结束):");
                string s = Console.ReadLine();
                if (s == "end")
                {
                    break;
                }
                Console.WriteLine("您输入的单词:" + s);
            }
        }
    }
}</span></span></span>


   这一大块都是流程控制语句,其中包括了if判断、switch控制、for循环、while循环、do while循环、foreach循环以及用break推出循环的代码示例,其实和当时学VB接触这些流程控制语句的用法差不多,只不过容器不同了,模式不同了而已吧!


<span style="font-family:KaiTi_GB2312;font-size:18px;">// 第一章 第六节 数组
//namespace Shuzu1
//{
//    class Shuzu2
//    {
//        public static void Main()
//        {
            // 定义数组的多种方式
            // //Declare a single-dimensional array
            // int[] array1 = new int[] { 5 };
            // //Declare and set array element values
            // int[] array2 = new int[] { 1, 3, 5, 7, 9 };
            // //Alternative syntax
            // int[] array3 = { 1, 2, 3, 4, 5, 6 };
            // //Declare a two dimensional array
            // int[,] multiDimensionalArray1 = new int[2, 3];
            // //Declare and set array element values
             int[,] multiDimensionalArray2 = {[1,2,3],[4,5,6]};
            // //Declare a jagged array
            // int[][] jaggedArray = new int[6][];
            // //Set the values of the first array in the jagged array structure
            // jaggedArray[0] = new int[4] {1,2,3,4};
            // Console.WriteLine(array3.);
            // 输出数组的维数 .Rank
            Declare and initialize an array;
            //int[,] theArray = new int[5, 10];
            //System.Console.WriteLine("The array has {0} dimensions.", theArray.Rank);
            //定义一维数组,并输出数组中的元素
            //int[] numbers = { 4, 5, 6, 1, 2, 3, -1, -2, 0 };
            //foreach (int i in numbers)
            //{
            //    System.Console.WriteLine(i);
            //}
            //定义二维数组,并输出数组中的元素
            //int[,] numbers2D = new int[3, 2] { { 9, 3 }, { 4, 5 }, { 55, 55 } };
            //foreach (int a in numbers2D)
            //{  
            //        System.Console.Write("{0} ", a);
            //}
            //Console.Write("\n");
            //定义数组并显示,下面的for循环不太明白
            //int[,] arr = new int[2,2] { { 1, 2 }, { 3, 4 } };
            //Console.Write("数组的行数为:");
            //Console.Write(arr.Rank);
            //Console.Write("\n");
            //Console.Write("数组的列数为:");
            //Console.Write(arr.GetUpperBound(arr.Rank - 1) + 1);
            //Console.Write("\n");
            //for (int i = 0; i < arr.Rank; i++)
            //{
            //    string str = "";
            //        for(int j = 0; j<arr.GetUpperBound (arr.Rank -1) +1;j++)
            //        {
            //            str = str + Convert.ToString(arr[i,j])+"";
            //        }
            //        Console.Write(str);
            //        Console.Write("\n");
            //}
            //动态定义多维数组并显示
            //Console.Write("请输入动态数组的行数:");
            //int row = Convert.ToInt32(Console.ReadLine());
            //Console.Write("请输入动态数组的列数:");
            //int col = Convert.ToInt32(Console.ReadLine());
            //int[,] arr = new int[row, col];
            //Console.WriteLine("结果:");
            //for (int i = 0; i < row; i++)
            //{
            //    for (int j = 0; j < col; j++)
            //    {
            //        Console.Write(i + j.ToString() + "");
            //    }
            //    Console.WriteLine();
            //}
//        }
//    }
//}</span>


   数组解释:


     1.数组是同一数据类型的一组值。


     2.数组属于引用类型,因此存储在堆内村中。


     3.数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行。


   数组属性:


     1.数组可以是一维、多维或交错的。


     2.数值数组元素的默认值设置为零,而引用元素的默认值设置为NULL。


     3.交错数组是数组的数组,因此,它的元素是引用类型,初始化为NULL。


     4.数组的索引从零开始,具有N个元素的数组的索引是从0到N-1。


     5.数组元素可以是任何类型,包括数组类型。


     6.数组类型是从抽象基类型Array派生的引用类型;由于此类型实现了IEnumerable,因此可以对C#中的所有数组使用foreach迭代。


   通过上面的例子,对于C#入门代码有了一些了解,再加上代码中反映出来的知识,总结之后相信在以后的学习中会让自己的思路更加清晰!加油ing。。。


   各位读者敬请期待我的下一章总结吧!

相关文章
|
2月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
167 2
|
4月前
|
C# 开发者 Windows
在VB.NET项目中使用C#编写的代码
在VB.NET项目中使用C#编写的代码
63 0
|
2月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
103 2
|
2月前
|
中间件 数据库连接 API
C#数据分表核心代码
C#数据分表核心代码
44 0
|
4月前
|
物联网 C# Windows
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
662 0
|
4月前
|
数据安全/隐私保护 C# UED
利用 Xamarin 开展企业级移动应用开发:从用户登录到客户管理,全面演示C#与Xamarin.Forms构建跨平台CRM应用的实战技巧与代码示例
【8月更文挑战第31天】利用 Xamarin 进行企业级移动应用开发能显著提升效率并确保高质量和高性能。Xamarin 的跨平台特性使得开发者可以通过单一的 C# 代码库构建 iOS、Android 和 Windows 应用,帮助企业快速推出产品并保持一致的用户体验。本文通过一个简单的 CRM 示例应用演示 Xamarin 的使用方法,并提供了具体的代码示例。该应用包括用户登录、客户列表显示和添加新客户等功能。此外,还介绍了如何增强应用的安全性、数据持久化、性能优化及可扩展性,从而构建出功能全面且体验良好的移动应用。
60 0
|
4月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
119 0
|
4月前
|
前端开发 程序员 API
从后端到前端的无缝切换:一名C#程序员如何借助Blazor技术实现全栈开发的梦想——深入解析Blazor框架下的Web应用构建之旅,附带实战代码示例与项目配置技巧揭露
【8月更文挑战第31天】本文通过详细步骤和代码示例,介绍了如何利用 Blazor 构建全栈 Web 应用。从创建新的 Blazor WebAssembly 项目开始,逐步演示了前后端分离的服务架构设计,包括 REST API 的设置及 Blazor 组件的数据展示。通过整合前后端逻辑,C# 开发者能够在统一环境中实现高效且一致的全栈开发。Blazor 的引入不仅简化了 Web 应用开发流程,还为习惯于后端开发的程序员提供了进入前端世界的桥梁。
505 0
|
4月前
|
C#
C# 跳过值班时间代码逻辑
C# 跳过值班时间代码逻辑
38 0
|
5月前
|
文字识别 自然语言处理 C#
印刷文字识别使用问题之C#发票识别的代码实例在哪里可以查看
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。