C#语言

这篇博客介绍了C#语言的基础知识,包括第一个C#程序、.NET Framework、IDE Visual Studio、C#的数据类型、变量、常量、控制结构、数组、循环、冒泡排序,以及类和对象的相关概念。深入探讨了C#的访问修饰符、this关键字、属性的使用,以及String类的常见操作。适合初学者快速掌握C#编程。

C#

第一章:第一个C#程序

  1. 1.NET概述与C#应用

.NET是Microsoft.NET的简称,是基于Windows平台的一种技术。它包含了能在.NET Framework平台运行的所有编程语言。C#是一种全新的语言,在设计它的时候,微软博采众长,将C,C++,Java等多种开发语言的优点集于一身,它是专为.NET开发而设计的编程语言。

  1. 2 IDE环境

    微软推出了强大的平台和技术,并提供了强大的集成开发环境来支持,这就是Visual Studio,它集成了 .NET Framework,目前是最流行的.NET平台开发环境。

Visual Studio发展历史

发布时间开发工具版本支持最高.NET Framework版本
1998年6月Visual Studio 6.0不支持
2002年2月Visual Studio.NET1.0
2003年4月Visual Studio 20031.1
2005年11月Visual Studio 20052.0
2007年11月Visual Studio 20083.5
2010年4月Visual Studio 20104.0
2012年8月Visual Studio 20124.5
2013年10月Visual Studio 20134.5.2
  1. 3 认识C#程序

    1.namespace 关键字

    2.Using 关键字

    3.class 关键字

    4.Main()方法

    语法:

    static void Main(string[] args){}
    static void Main(){}
    static int Main(string[] args){}
    static int Main(){}
    

    C#中的数据类型

    常用数据类型JavaC#举例
    整形intint年龄
    浮点型floatfloat成绩
    双精度浮点doubledouble圆周率
    字符串型Stringstring姓名
    布尔型booleanbool是否是少数名族

    C#中的变量

    语法:

    数据类型 变量名称;

    C#中的变量命名与Java也基本相同,只是“$”符号在C#中是不能使用的,变量命名三条规则:

    组成:52个英文字母(A~Z, az),10个数字(09),下划线(_),

    除此之外不能包含有其他的字符。

    开头:只能以字母或下划线开头。

    不能使用的:不能是C#中的关键字。

    变量的名称要有意义,对应相应的英文命名,具有见名知意的作用。

    避免使用单个字符作为变量名,多个单词组成变量名时,应使用驼峰命名法。

    什么是常量

    const 数据类型常量名称 = 值;

    列如:

    public const int dayMax = 3;//定义常量dayMax
    

    常量的命名规范:

    常量命名必须有一定的实际意义。

    常量名称最好以大写字母来命名,中间可根据意义链接性用下划线连接。

    常量名称长度最后不要超过25个字符。

    C#向控制台输出

    语法:

    方式一:

    Console.WriteLine();
    

    方式二:

    Console.WriteLine(要输出的值);
    

    方式三:

    Console.WriteLine("格式字符串",变量列表);
    

    Console.ReadLine();

    返回一个字符串,可以直接把它赋给一个字符串变量。

    int.parse()方法的作用是把字符串转为整数。

    示列:

    class program
    {
        static void Main(string[] args)
        {
    	string course = "C#";
    	Console.WriteLine(course);
    	Console.WriteLine("我的课程名称是:"+course);//用+号输出
    	Console.WriteLine("我的课程名称是:{0}",course);//用占位符输出
    	}
    }
    
    类和对象

    语法:

    [访问修饰符]返回值类型 方法名(参数列表)
    
    {
    
    //方法的主体
    
    }
    

    1.访问修饰符

    2.方法的返回值类型

    3.方法名

    4.参数列表

    5.方法的主体

public class User
{
    public string _name;//户姓名
    public string _password;//份证号
    public string _identityNum;//存款余额
    public string _balance;//账号
    public string _accout
}
 public class bank 
    {
        static void Main()
        {
            Program user = new Program();
            Console.WriteLine("请输入用户名!");
            user._name = Console.ReadLine();
            user._account = "179709064356";
            Console.WriteLine("请输入密码");
            user._password = Console.ReadLine();
            Console.WriteLine("请输入省份账号");
            user._identityNum = Console.ReadLine();
            Console.WriteLine("请输入用户存款金额");
            user._balance = double.Parse(Console.ReadLine());
            Console.WriteLine("账户:{0},用户名:{1},存款金额:{2}创建成功!",user._account,user._name,user._balance);
            Console.ReadLine();
        }
    }  

第二章C#语法快速热身

1.if结构语法:
语法1:
if(条件表达式)
{
    //代码块
}


语法2:
if(条件表达式)
{
    //代码块1
}
else
{
     //代码块2
}


语法3:
if(条件表达式1)
{
    //代码块1
}
else if(条件表达式2)
{
     //代码块2
}
else if(条件表达式3)
{
     //代码块3
}
else
{
    //代码块4
}


语法4:
if(条件表达式1)
{
   if(条件表达式2)
   {
       //代码块1
   }
   else
   {
       //代码块2     
   }
}
else
{
     //代码块3
}


在这里插入图片描述

2.switch结构

switch选择结构的条件只能等值判断,而且只能是整型或字符型的等值判断,判断一个整型变量或表达式是否等于某个整数值的情况。

switch(表达式)
{
        case常量表达式1:
            //语句;
            break;//必须有
        case常量表达式2:
             //语句2;
            break;//必须有
            default:
        //语句
        break;//必须有
}

与Java异同c#的switch表达式break必须有,switch结构中case子句的摆放是没有顺序的,可以把default放在最前面,但是两个case语句不能有相同的值。

break在循环中用于终止某个循环,使程序跳到循环体外的下一条语句。在循环中位于break后的语句不再执行,循环也停止执行,break不仅可以用在for循环结构中,也可以用在while和do-while循环结构中。

case子句中的值必须是常量表达式,不允许使用变量。

 class Program
    {
        static void Main(string[]args) 
        {
            Console.WriteLine("请输入星期几");
            string a = Console.ReadLine();
            switch (a) //表达式是string类型
            {
                case "一":
                case "二":
                case "三":
                    Console.WriteLine("干煸扁豆6元");
                    break;
                case "四":
                case "五":
                    Console.WriteLine("蒜咡油麦菜4元");
                    break;
                case "六":
                case "日":
                    Console.WriteLine("口水鸡8元");
                    break;
                default:
                    Console.WriteLine("你输入的星期不正确");
                    break;
            }
            Console.ReadLine();
        }
      
    }
3.数组

1.一维数组

数据类型[] 数组名 = new 数据类型[长度];
数据类型[] 数组名 = {};
数据类型[] 数组名 = new 数据类型[长度]{};
int[] array4 = new int[3] { 1, 2, 3 };

赋值:数组名[下标] = 值;
取值:数组名[下标];
下标:从1开始,长度-1结束
长度:数组名.Length;

2.对象数组

 class Program
    {
        public string name;//姓名
        public double score; //成绩
        public void showInfo() 
        {//输出信息
            Console.WriteLine(name+"\t"+score);
        }
        static void Main(string[] args)
        {
            Program[] stus = new Program[3];//为对象数组元素赋值
            stus[0] = new Program();
            stus[0].name = "张浩";
            stus[0].score = 100.0;
            stus[1] = new Program();
            stus[1].name = "张豪";
            stus[1].score = 99.0;
            stus[2] = new Program();
            stus[2].name = "李天";
            stus[2].score = 70.0;
            Console.WriteLine("前三名学员的信息为:");
            foreach (Program a in stus) 
            {
                a.showInfo();
            }
            Console.ReadLine();
        }
    }
4.循环
语法:
      while(条件)
      {
	//代码块
      }
//循环是先判断条件表达式是否成立。若条件成立,则执行循环体;否则结束循环。

	do
	{
		//代码
	}while(条件);
//循环先执行一次循环体在判断条件表达式是否成立。若条件成立,则循环否则结束循环。

	for(初始化; 条件;迭代)
	{
        //代码块
	}


   foreach(数据类型[根据数组的数据类型决定] 变量名 in 数组名)
   {
      //代码块
   }
//循环用于遍历给定数组所有的值。

示列:

  class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一个字符串");//输入提示
            string line = Console.ReadLine();//从控制台读入字符串
            foreach (char c in line)//循环输出字符串的字符 
            {
                Console.WriteLine(c);
            }
            Console.ReadLine();
        }
    }

1.二重循环就是一个循环体内又包含另外一个完整的循环结构,while循环do-while循环和for循环,这三种循环是可以互相嵌套的。

class Program
    {
        static void Main(string[] args)
        {
            int i, j;//循环变量
            for (i = 1;i <= 5;i++)//外层循环控制打印的行数 
            {
                for (j = 1;j <=i;j++) //内存循环控制每行打印数字的个数
                {
                    Console.Write(j);//打印一个数字
                }
                Console.WriteLine();//打印完一行之后换行
            }
            Console.ReadLine();
        }
    }
5.冒泡排序

1、两两相邻比较
2、不满足排序规则:交换位置

示列:

  class Program
    {
        static void Main(string[] args)
        {
            int[] scores = new int[5];//成绩数组
            int i, j;//循环变量
            int temp;
            //输入成绩
            Console.WriteLine("请输入5个学员的成绩:");
            for (i = 0; i < scores.Length; i++)
            {
                Console.WriteLine("请输入第{0}个学员的成绩:", i + 1);
                scores[i] = int.Parse(Console.ReadLine());
            }
            //开始排序——使用冒泡排序
                for (i = 0; i < scores.Length - 1 ; i++)
             
                {
                for (j = 0;j<scores.Length - 1 -i;j++) 
                {
                    if (scores[j] > scores[j + 1]) 
                    {
                        //交换元素
                        temp = scores[j];
                        scores[j] = scores[j + 1];
                        scores[j + 1] = temp;
                    }
                }
            }
            //排序后输出
            Console.WriteLine("排序后的成绩为:");
            for (i = 0;i<scores.Length;i++) 
            {
                Console.Write("{0}\t",scores[i]);
            }
            Console.ReadLine();
        }
    }

本章总结

C#一维数组的声明和初始化与Java略有不同,声明时不能将数组名放在数据类型和方括号之间。

二重循环就是一个循环中嵌套另外一个循环,必须将内存循环完整地包含在外层循环的循环体内。

break和continue语句用在内层循环时,只对内层循环的执行有影响,并不影响外层循环。

第三章:使用属性升级MyBank

1.访问修饰符

在应用程序中,访问修饰符可以用来修饰类成员字段和方法,以此限定类成员的可访问级别。

字面向对象的程序中,可以将访问修饰符放置在类中每个成员的定义之前,无论它是一个字段还是一个方法。每个访问修饰符只能为紧随其后的成员指定特定的访问权限。

public:不受任何限制访问级别最高

private:只有类的内部可以使用访问级别最低

示列:

 class Student 
    {
        private string _name;
        public int _age = 19;
        public string _cardID = "110882198110252476";

        public void SetName(string name) 
        {
            _name = name;
        }
        public void Say() 
        {
            Console.WriteLine("大家好!我叫{0},今年{1}.",_name,_age);
        }
    }        
        static void Main(string[] args)
        {
            Student a = new Student();//实例化一个学员对象
            a.SetName("灰太狼");//为学员姓名赋值
            a.Say();//输出学员姓名和年龄
            Console.ReadLine();
        }
    }
2.this关键字

在面向对象编程语言中,this关键字是指当前对象本身

使用this关键字可以解决成员变量和局部变量名称的冲突问题。

this关键字代表的是当前的对象,在类的内部,可以用this关键字访问类的成员。

注意:this是当前类的引用,不能在静态成员中引用。

3. C#属性

用属性实现字段封装

封装是将数据和操作方法保存在一起的技术,或者有选择的隐藏或公开类中的属性和方法。

语法:

private string name;
public string name
{
	get{return name;}   //只读
	set{name=value;}	//赋值(只写属性)
}

1.避免使用非法数据赋值

2.保证数据的完整性

3.避免类内部发生修改,导致整个程序修改。

值传递:分为基本数据类型和引用数据类型:

基本数据类型:形参所作修改不会影响实参。

引用数据类型:形参如果修改具体的值会影响实参。(如果形参修改了指向的地址,那么接下来形参做的任何一项改变都不会影响实参)

引用传递

在实参和形参前面多了一个关键字:ref

无论是形参还是实参所作修改都会受影响

传递都是地址

示列:

public void show()
{
  ....
  int num1 ,num2;
  swap(ref num1,ref num2);
}

public void Men(ref int num1,ref int num2) //ref关键字修饰的参数可以将被调用方法中参数的更新值传递给调用者
{
	......
}

第四章:深入C#的String类

1.常用字符串处理方法
方法说明
Replace(String old, String newStr):替换
bool Equals(string value)比较一个字符串与另一个字符串value的值是否相等,若两者相等,返回true否则 返回false
int IndexOf(string value)获取value所在的指定的位置
int lastIndexOf(string value)获取指定的字符串value在当前字符串中最后一个匹配的位置
string Substring(int index)从指定位置sta开始检索长度为length的字符串
string ToUpper()获得大写的形式
string ToLower()获得字符串的小写形式
string []Split(char separator)用指定的分隔符separator分割字符串,返回分割后字符串的数组
Concat()进行字符串的连接
string Trim()去掉字符串前后两端多余的空格
static IsNullOrEmpty(String)既可以判断空对象的字符串,又可以判断长度为0的字符串
Remove(int index,int length);从开始下标到length-1的内容都被删除
2.Format格式化

语法:

String myString = String.Format("格式字符串",参数列表);

格式化数值结果表:

字符说明示例输出
C货币形式String.Format("{0:C3}",2000)¥2000.00
D十进制形式String.Format("{0:D3}",2000)2000
F小数点后的位数固定String.Format("{0:F3}",2000)2000.000
N用逗号(,)隔开的数字String.Format("{0:N}",25000)250.000
P百分比计数字String.Format("{0:P3}",0.29768)29.768
X十六进制格式String.Format("{0:X000}",12)C
3.类型转换

1.简单的类型转换

隐式类型转换:int型可以隐式转换为float型或double型,float型可以隐式转换为double型。

常用于数值型之间,将取值范围小的数值类型转换为取值范围大的数值类型。

显示类型转换:等同于java中的强制转换。

常用于数值型之间,将取值范围大的数值类型转换为取值范围小的数值范围

2.数值类型与字符串之间的转换

整型:int.Perse(string);

单精度浮点型:float.Perse(string);

双精度浮点型:double.Perse(string);

3.使用Convert类进行转换

方法说明
Convert.ToInt32()转换为整型(int 型)
Convert.ToSingle()转换为单精度浮点型(float型)
Convert.ToDouble()转换为双精度浮点型(double型)
Convert.ToString()转换为字符串类型(string型)
Convert.ToInt64()转换为长整型(long 型)

**Parse()**方法:将字符串转换为其他类型

Convert类:任何基本数据之间的相互转换。

 class Program
    {
        static void Main(string[] args)
        {
            double myDouble = 85.63;
            int myInt;
            float myFloat;
            string myString;

            Console.WriteLine("原始数值为double类型:{0}", myDouble);
            myInt = Convert.ToInt32(myDouble);//转换为整形
            myFloat = Convert.ToSingle(myDouble);//转换为浮点型
            myString = Convert.ToString(myDouble);//转换为字符串型
			//输出转换后的数据
            Console.WriteLine("转换后:");
            Console.WriteLine("int\t float\t string");
            Console.WriteLine("{0}\t {1}\t {2}",myInt,myFloat, myString);

            Console.Read();
        }
    }

class Program
{
static void Main(string[] args)
{
double myDouble = 85.63;
int myInt;
float myFloat;
string myString;

        Console.WriteLine("原始数值为double类型:{0}", myDouble);
        myInt = Convert.ToInt32(myDouble);//转换为整形
        myFloat = Convert.ToSingle(myDouble);//转换为浮点型
        myString = Convert.ToString(myDouble);//转换为字符串型
		//输出转换后的数据
        Console.WriteLine("转换后:");
        Console.WriteLine("int\t float\t string");
        Console.WriteLine("{0}\t {1}\t {2}",myInt,myFloat, myString);

        Console.Read();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值