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

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

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

<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>

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

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

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

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

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

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

<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>
    C#—代码了解知识点(一)

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

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

<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 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>
    知识点:枚举比使用无格式的整数的优势

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

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

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

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

<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>
    此代码主要介绍了is( is就是处于对类型的判断)运算符的用处。

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

<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>

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

// 第一章 第六节 数组
//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();
            //}
           
//        }
//    }
//}
    数组解释:

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

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

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

    数组属性:

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

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

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

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

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

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

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

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

3楼u013030601昨天 20:33
对了,我也看书了,这总结的时候就把书这事给忘记了,谢谢提醒哦!
2楼zhangmeihong2昨天 20:16
改天给我传授一点C#的学习经验!!
1楼u013034223昨天 19:42
在看视频的时候,有本书会好很多