C#
第一章:第一个C#程序
- 1.NET概述与C#应用
.NET是Microsoft.NET的简称,是基于Windows平台的一种技术。它包含了能在.NET Framework平台运行的所有编程语言。C#是一种全新的语言,在设计它的时候,微软博采众长,将C,C++,Java等多种开发语言的优点集于一身,它是专为.NET开发而设计的编程语言。
-
2 IDE环境
微软推出了强大的平台和技术,并提供了强大的集成开发环境来支持,这就是Visual Studio,它集成了 .NET Framework,目前是最流行的.NET平台开发环境。
Visual Studio发展历史
| 发布时间 | 开发工具版本 | 支持最高.NET Framework版本 |
|---|---|---|
| 1998年6月 | Visual Studio 6.0 | 不支持 |
| 2002年2月 | Visual Studio.NET | 1.0 |
| 2003年4月 | Visual Studio 2003 | 1.1 |
| 2005年11月 | Visual Studio 2005 | 2.0 |
| 2007年11月 | Visual Studio 2008 | 3.5 |
| 2010年4月 | Visual Studio 2010 | 4.0 |
| 2012年8月 | Visual Studio 2012 | 4.5 |
| 2013年10月 | Visual Studio 2013 | 4.5.2 |
-
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#中的数据类型
常用数据类型 Java C# 举例 整形 int int 年龄 浮点型 float float 成绩 双精度浮点 double double 圆周率 字符串型 String string 姓名 布尔型 boolean bool 是否是少数名族 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();
}
}
这篇博客介绍了C#语言的基础知识,包括第一个C#程序、.NET Framework、IDE Visual Studio、C#的数据类型、变量、常量、控制结构、数组、循环、冒泡排序,以及类和对象的相关概念。深入探讨了C#的访问修饰符、this关键字、属性的使用,以及String类的常见操作。适合初学者快速掌握C#编程。

9043

被折叠的 条评论
为什么被折叠?



