数据结构:C#语言与面向对象技术(1)

数据类型

  • 简单数据类型:byte,short,int,long,float,double,char,bool
  • 组合数据类型:struct、enum、class
  • 值类型:作为参数传递时,传递拷贝。包括:简单数据类型、struct类型、enum类型
  • Book bk存放到栈里面,Book bk = new Book()存放到堆里,要自己释放否则导致内存泄漏
using System;

namespace ConsoleApp3
{
    public struct Book 
    {
        public double Price;
        public string Title;
        public string Author;
    }
    class Program
    {
        static void Changebook(Book bk)
        {
            bk.Price = 1.01;
            bk.Title = "Spss";
            bk.Author = "John";
        }
        static void PrintBook(Book bk) 
        {
            Console.WriteLine("Book Infor:\n Price={0},Title={1},Author={2}", bk.Price, bk.Title, bk.Author);
        }
        static void Main(string[] args) 
        {
            Book bk;
            bk.Price = 10.01;
            bk.Title = "Matlab";
            bk.Author = "Tom";
            PrintBook(bk);
            Changebook(bk);
            PrintBook(bk);
        }
    }
}
Book Infor:
 Price=10.01,Title=Matlab,Author=Tom
Book Infor:
 Price=10.01,Title=Matlab,Author=Tom
  • 引用类型:作为参数传递时,传递地址。包括:class类型、array数组
  • 对于引用类型来说要在堆里新创建一个对象
using System;

namespace ConsoleApp3
{
    public class Book 
    {
        public double Price;
        public string Title;
        public string Author;
    }
    class Program
    {
        static void Changebook(Book bk)
        {
            bk.Price = 1.01;
            bk.Title = "Spss";
            bk.Author = "John";
        }
        static void PrintBook(Book bk) 
        {
            Console.WriteLine("Book Infor:\n Price={0},Title={1},Author={2}", bk.Price, bk.Title, bk.Author);
        }
        static void Main(string[] args) 
        {
            Book bk = new Book();
            bk.Price = 10.01;
            bk.Title = "Matlab";
            bk.Author = "Tom";
            PrintBook(bk);
            Changebook(bk);
            PrintBook(bk);
        }
    }
}
Book Infor:
 Price=10.01,Title=Matlab,Author=Tom
Book Infor:
 Price=1.01,Title=Spss,Author=John

C#中WriteWriteline的区别:

  • Write:光标会停在输出字符串的最后一个字符,不会移动到下一行
  • Writeline:将要输出的字符串与换行控制字符一起输出,当次语句执行完毕的时候,光标会移到目前输出字符串的下一行
using System;

namespace ConsoleApp7
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("林深时见鹿,海蓝时见鲸,梦醒时见你.");
            Console.WriteLine("可实际:林深时雾起,海蓝时浪涌,梦醒时夜续。 不见鹿,不见鲸,也不见你。");
            Console.Write("但终究: 鹿踏雾而来,鲸随浪而涌。 你没回头又怎知我不在。 可我看来: 鹿见人而惊 消失于林深, 鲸踏浪而上 搁浅于浅滩.");
            Console.WriteLine("亦如我见你 如碌如惊。");//注意Write下面的输出语句不会换行输出而WriteLine后面的语句会换行输出
        }
    }
}
林深时见鹿,海蓝时见鲸,梦醒时见你.
可实际:林深时雾起,海蓝时浪涌,梦醒时夜续。 不见鹿,不见鲸,也不见你。
但终究: 鹿踏雾而来,鲸随浪而涌。 你没回头又怎知我不在。 可我看来: 鹿见人而惊 消失于林深, 鲸踏浪而上 搁浅于浅滩.亦如我 见你 如碌如惊。
  • 引用类型:Array数组
using System;

namespace ConsoleApp7
{
    class Program
    {
        static void ChangeArrayItem(int[] array) 
        {
            for (int i = array.Length - 1; i >= 0; i--) 
            {
                array[i] = array.Length - 1 - i;//把数组倒序
            }
        }
        static void PrintArrayItem(int[] array)
        {
            for (int i = 0; i < array.Length; i++) 
            {
                Console.Write("{0}", array[i]);//把数组中的元素一个挨一个输出
            }
            Console.WriteLine();//输出一个空行把光标移动到下一行
        }
        static void Main(string[] args) 
        {
            int[] arr = new int[10];
            for (int i = 0; i < arr.Length; i++) 
            {
                arr[i] = i;
            }
            PrintArrayItem(arr);
            ChangeArrayItem(arr);
            PrintArrayItem(arr);
        }
    }
}
0123456789
9876543210
变量和常量
  • 变量定义:变量类型 变量名:
  • 常量定义:readonly在声明或构造函数中初始化,const必须在声明时初始化

构造函数

  • 函数名和类名相同
  • 函数没有返回值
    注:conststatic可以直接调用类名方法来使用
using System;

namespace ConsoleApp8
{
    public class SimpleClass
    {
        public int X;
        public readonly int Y = 2;
        public readonly int Z;
        public const double Pi = 3.14159;
        public const string Etc = "...";
        public SimpleClass()
        {
            Z = 3;//Z是通过readonly定义的所以可以在构造函数中初始化
        }
        public SimpleClass(int p1, int p2, int p3)
        //编译时多态
        {
            X = p1;
            Y = p2;
            Z = p3;
        }
        class Program
        {
            static void Main(string[] args)
            {
                SimpleClass sp1 = new SimpleClass();
                sp1.X = 1;
                Console.WriteLine("sp1:x={0},y={1},z={2}", sp1.X, sp1.Y, sp1.Z);
                SimpleClass sp2 = new SimpleClass(-1, -2, -3);
                Console.WriteLine("sp2:x={0},y={1},z={2}", sp2.X, sp2.Y, sp2.Z);
                Console.WriteLine("PI={0}{1}", SimpleClass.Pi, SimpleClass.Etc);//调用类名方法

              
            }
        }
    }
}
sp1:x=1,y=2,z=3
sp2:x=-1,y=-2,z=-3
PI=3.14159...

运算符与表达式

  • 运算符:
    一元运算符 x++,y++
    二元运算符 x+y,x-y
    三元运算符 max = x > y ? x : y;
  • 运算符:
    算术运算符 +、-、*、/、……
    关系运算符 >、>=、==、!=、<=、<、
    逻辑运算符 !、&&、|| 二进制:~、&、|
  • 表达式:由运算符和变量或常量组成的式子
  • 基本语句:
    条件语句(if-else if-else)
    开关语句
switch(表达式)
{
	case1:语句序列1;break;
	case2:语句序列2;break;
	case值N:语句序列N;break;
	default:语句序列N+1;break;
}
using System;

namespace ConsoleApp10
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rdm = new Random();
            int i = rdm.Next(1, 5);
            Console.WriteLine(i);
            switch (i) 
            {
                case 1:Console.WriteLine("Case 1.");break;
                case 2:Console.WriteLine("Case 2.");break;
                case 3:Console.WriteLine("Case 3.");break;
                default:Console.WriteLine("Default Case.");break;
            }
        }
    }
}
1
Case 1.
using System;

namespace ConsoleApp10
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rdm = new Random();
            int i = rdm.Next(1, 5);
            Console.WriteLine(i);
            switch (i) 
            {
                case 1:
                case 2:
                case 3:Console.WriteLine("It is 1,2or3.");
                    break;
                default:Console.WriteLine("Default Case.");break;
            }
        }
    }
}
2
It is 1,2or3.
  • 循环语句:for循环,while循环,do-while循环
using System;

namespace ConsoleApp11
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array = new int[] { 1, 3, 5, 7 };
            foreach (int i in array) 
            {
                Console.WriteLine(i);
            }
        }
    }
}
1
3
5
7
  • try...catch...finally语句
try
{
	语句序列;
}
catch(Exception ex)
{
	语句序列;
}
finally
{
	语句序列;
}
//
先执行try语句产生异常(异常信息存储在ex中)执行catch语句最后执行finally语句
using System;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一个整数");
            string temp = Console.ReadLine();
            try
            {
                int count = int.Parse(temp);
                for (int i = 0; i < count; i++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine("错误原因:" + ex.Message);
                Console.WriteLine("请重新运行");
            }
            finally
            {
                Console.WriteLine("结束");
            }
        }
    }
}
//
请输入一个整数
face++
错误原因:Input string was not in a correct format.
请重新运行
结束
//
请输入一个整数
5
*****
结束
  • break,continue语句
break:跳出最里面的封闭循环或switch语句中
continue:当遇到continue的时候就不往下执行了,进行封闭循环的下一次迭代
using System;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 1; i <= 100; i++) 
            {
                if (i == 5)
                    break;
                Console.WriteLine(i);
            }
            for (int i = 1; i <= 100; i++) 
            {
                if (i < 99)
                    continue;
                Console.Write(i + " ");
            }
            Console.WriteLine();
        }
    }
}
//
1
2
3
4
99 100
  • 注释语句
//文字序列 (单行注释) //
/*文字序列*/(多行注释)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值