C#学习笔记---基础入门(一)
C#中的变量:
一个变量就是存储区(内存)中的一个存储单元。
变量声明赋值:int money =1000;/int money;money=1000; 输出:console.writeLine(money);console.ReadLine(money);
变量的命名规则:即标识符的命名规则: 字母,数字,下划线(不能以数字开头,区分大小写)
命名规范:简短且能清楚的表明变量的作用,通常第一个单词的首字母小写,其后单词的首字母大写,例如myScore
变量的作用域(生命周期):类体中的成员变量(类中的全局变量)-》1.static int x=90;//静态变量 2 .int x=90;//实例变量
静态方法中调用静态变量可以根据变量名(类名.变量名)直接调用,而想调用实例变量必须经过对象名调用。
class Program { int aa=10;//实例变量 static int bb=20;//静态变量 static void Main(string[] args) { Program pro=new Program(); Console.WriteLine(pro.aa); Console.WriteLine(bb); } }
方法中的局部变量 :只限制于方法内可以调用。
数据类型:
值类型:整数/实数/字符/布尔 结构/枚举
-------值类型直接存储值(对一个对象进行修改,不会改动其他对象值)
八进制(以0开头,其他为0-8)十六进制(以0X开头);C#默认小数是double类型,所以使用float类型时后面加f.
特点:值类型表示实际数据,只是将值存在内存中,值类型都存储在栈(固定空间)中。
引用类型:类/接口/数组/委托 一般会用到New关键字,string类型是引用类型
特点:引用类型表示指向数据的指针或引用,包含内存堆(动态空间)中对象的地址,为NULL,表示未引用任何对象。
类型转换:隐式类型转换:低精度向高精度转换,可以隐式转换,或者两者可兼容,例如int与double
显式转换/强制转换:
int b=(int)10.2;//(类型名)表达式 double a=10; int c=(int)a;
double a=10;
int c=Convert.ToInt32(a);//Convert.To类型名(表达式)经常用
double a=10;
double c=double.Parse(a.ToString());//.Parse类型名(表达式必须为String型)
string str="10";
int c=Int32.Parse(str);
值类型转换为->引用类型 称为装箱
引用类型转换为->值类型 称为拆箱
int i =10;//值类型 object obj=i;//装箱操作 int j=(int)obj;//拆箱操作
枚举类型:
枚举是一组描述性的名称
枚举定义一组有限的值,不能包含方法
对可能的值进行约束
枚举允许描述性名称表示整数值
语法:enum 枚举名{值1,值2...}
public enum Mrkj { CS=1,Java=2,C=3 } 在main方法中输出 console.WriteLine((int)Mrkj.CS);
枚举使用:日期相关程序,编写用户权限
常量:
静态常量:const 不能被修改 ,与static变量相同,可以直接通过类名调用。
动态常量:readonly 在构造函数中可以被修改
C#中的表达式与运算符
表达式由操作数与运算符构成
运算符:+ - * / %
自增自减运算符:b=a++(先取值,后自增);b=--a(先自减,后取值);
赋值运算符=:需要注意赋值左右两边值类型的隐式转换问题。
关系(比较)运算符:>= <= > < == !==
逻辑运算符:非! 与&& 或 || (如果使用&或者| ,效率没有&&,||效率高)
位运算符:按位与运算 5&4=4.因为5=00101 ,4=00100,按位与得到00100
按位或运算 3|6=7.因为3=00011 ,6=00110,按位或得到00111
按位取反运算 ~7取反为-8.因为7=00000111 ,按位取反得到11111000
按位异或运算 10^3=9.因为10=001010 ,3=000011,按位异或得到001001
移位运算:左移位<<右移位>> 左移几位就是*2的几次方。 右移几位就是除以2的几次方。
特殊运算符:
运算符的优先级:下图优先级从上到下,由高到低。(结合表示同级从右向左,从左向右)
C#中的字符与字符串
字符 char(单个字符) 用单引号 ,例如char a=‘a’;可以通过调用char类下的方法进行一些操作,具体通过help查看其相关方法
转义字符:“\”将原有字符的意义改变
转义符 | 说明 |
\n | 回车换行 |
\t | 横向跳到下一制表位置 |
\" | 双引号 |
\b | 退格 |
\r | 回车 |
\f | 换页 |
\\ | 反斜线符 |
\' | 单引号符 |
如果想输出目录,例如“C:\windows\app\sad\haha”,有很多反斜线,则可以使用@方法,即@“C:\windows\app\sad\haha”。也可正常输出。
字符串 string 用双引号
string str1=null;//null与空字符串不是同一概念。null不推荐
string str2="";
连接多个字符串使用“+”运算符
比较字符串:if(name==""){} if(name.Equals(string.Empty)){}
string.Compare(str1,str2) str1.CompareTo(str2) 这两种可以比较两个字符串的值,但如果是英文或汉字,则比较他们在字典中的位置。如相等返回0,不等返回1.或-1
格式化字符串:string myString=string.Format("{0}乘以{1}等于{2}“,2,3,2*3);//输出结果为2乘以3等于6
格式化日期格式:
插入字符串:在字符串的指定位置插入子字符串
语法 string Insert(int startIndex ,string value)
填充字符串:在字符串的左侧或者右侧进行字符填充(只能填充一个单字符)
语法 string PadLeft(int totalWidth,char paddingchar)
string PadRight(int totalWidth,char paddingchar)
删除字符串:从一个字符串的指定位置开始,删除指定数量的字符
语法 string Remove(int startIndex,int count)
复制字符串:Copy方法----全部复制 (静态方法,通过类名调用)
CopyTo方法----部分复制(非静态方法,通过对象名调用)
string str="helloworld"; string str1=string.Copy(str);//完全复制 char[] ch1=new char[10]; str.CopyTo(6,ch1,3,4);//部分复制,参数代表含义为从str的第6个字符复制5个字符到ch1数组中,从第三个位置开始粘贴
替换字符串:将字符串中的某个字符或者字符串替换成其他的字符或字符串
语法 string Replace(char OldChar,char NewChar)
string Replace(string OldValue,string NewValue)
StringBuilder类(对原有对象进行操作,不会生成新的对象)
其存在System.Text命名空间中
常用的方法:Append//AppendFormat//Insert//Remove//Replace
StringBuilder sbuilder=new StringBuilder("MR"); sbuilder.Append("soft"); sbuilder.AppendFormat("{0:C}",365); sbuilder.Insert(2,"mr"); sbuilder.Remove(2,2); sbuilder.Replace("soft","SOFT");//输出MRSOFT¥365.00
StringBuilder 与String的区别在于String Builder效率更高
C#中的条件判断语句
if else
if else if
switch case
C#中的循环控制语句
while语句
do while语句
for循环语句
foreach语句 用于枚举一个集合的元素,并对该集合中的每个元素执行一次嵌入语句。
using System.Collection; 在main方法中 ArrayList list=new ArrayList(); list.Add("a"); list.Add("b"); list.Add("c"); foreach (string str in list) { Console.WriteLine(str); } Console.ReadLine();
C#中的跳转语句
break; 用于退出最内层的循环或者退出一个switch语句
contine; 用于终止当前循环,并开始下一次循环,只能用于while /do while/for/foreach 中
goto 用于将控制转移到由标签标记的语句,goto case 【参数表达式】;goto default;goto【标签】;
return;返回语句 返回与方法相同的数据类型
数组
一维数组
声明初始化数组 int[] numbers = new int[5];
float[] scores = new float[3]{1.1f,2.4f,5.6f};
string[] names = new string[10];//使用new是给数组动态赋值。
string[] s={"laowang","laozhang","laoli"};//给数组进行静态赋值Tips:CW+tab+tab---Console.WriteLine();
for+tab+tab,----快捷键输出for循环
二维数组
int[,] numbers =new int[2,3];//声明一个2行3列的数组,初始值为0.
int[,] numbers =new int[2,3]{
{1,2,3},
{4,5,6}
};
遍历二维数组除了使用双层遍历for循环,还可以用更简单的foreach方法 , 当我们不需要对循环本身进行控制, 推荐使用foreach。 foreach (int num in numbers){}