黑马程序员之C#基础小结一

来源:互联网 发布:c语言中的函数格式 编辑:程序博客网 时间:2024/05/18 06:03

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

1 基本概念和一些小技巧
vs界面托乱了的处理措施:工具--导入和导出设置--否,仅重置设置,从而覆盖我的当前设置--Visual C#开发环境--完成--关闭
F5先生成后运行 F6是生成
显示行号:工具--文本编辑器--所有语言---显示---行号

.net的语言无关性:是由于有MSIL(微软中间语言)
平台无关性是因为有CLR

.NET框架:.net framework类库(基本框架类+ado.net XML+ web窗体  web services winform),CLR(CLS公共语言规范 CTS通用类型系统

JIT及时编译器)

RAM随机存储器
decimal bool byte;
"+"的两种作用:1 普通加法 2连接字符串;
Console.WriteLine()可以使用占位符,用于替换占位符的东西可以是通过运算得到的,参数个数可以多但占位符的个数不能多;
decimal和double不能相互自动转换,m,f
强制类型转换是不进行四舍五入的,Math.Round();

2 转义字符:什么时候使用转义字符呢?就是在你需要在字符串中输入一些特殊字符的时候比如(半角引号、换行、退格等)就需要使用转

义字符
 \n换行  \b退格  \t表示tab键
 加@或\取消转义,这时字符串真的'\'就是它本身的意思'\',加@的字符串在vs中可以折行。

3 int类型转换成string类型
Convert.ToInt32 的参数为 null 时,返回 0,参数为“ ” 时,抛出异常; Convert.ToInt32 内部就已调用了 int.Parse();
int.Parse 的参数为 null 时,抛出异常,参数为“ ” 时,抛出异常。
int.TryParse(字符串,out int类型的变量),如果转换失败,输出值为 0
(int)

1 (int)变量名[强制类型转换]:
     该转换方式主要用于数字类型转换,从int类型到long,float,double,decimal类型,可以使用隐式转换,但是从long类型到int类型就

需要使用显式转换,也就是该数据类型转换方式,

否则会产生编译错误。
      该方式对于浮点数会做无条件舍去,失去精确度
      当然,该方式也可以进行object到int得转换,但是,object的值要赋予int类型的值,否则会产生编译错误,而且object为null或

object c = "";时也会出错。
      最后切忌的一点,千万不要用来处理char类型到int类型的转换,否则传回的的值是ASCII代码,而并不是你想要的值。
2 int.Parse(string类型变量名)
       该方式是将数字内容的字符串转为int类型,如果字符串内容为空或者null时,则抛出ArgumentNullException异常;如果字符串内容

不是数字,则抛出FormatException异常;如果字

符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常。
      使用该方法切忌的一点就是只能处理字符串内容,而且字符串内容只能在int类型可表示的范围之内。
3 int.TryParse(string s, out int result)
      该方式也是将数字内容的字符串转为int类型,但是该方式比int.Parse优越的地方,就是它不会出现异常。如果转换成功返回 true,

如果转换失败返回 false。很明显,最后一个参数

为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。
4 Convert.ToInt32
      该方式不仅可以将字符串转为int类型,还可以将其它类型的值转成int类型。变量若为object或string类型,当其值为null时,会传

回0,不会造成程序错误,但是若此string类型的值

为string.Empty,在转型成int时,仍会造成程序错误。
    该方式对于浮点数会做四舍五入。
    该方式同强制转换一样,不能用来处理char类型,否则传回的是ASCII代码。

总结:
1(int)主要用于数值之间;对于浮点数会无条件的舍去;object,为null、object c = "";或非数值类型的话都出错;转换char时得到的是

ascii码;【注意:好多类型是不能转的如:字符串,日期等】
2 int.Parse,null ""都会出错;不是数字类型的字符串会出错;超出了int的表示范围也会出错
3 int.TryParse 失败时 int中是0【这个最常用】
4 Convert.ToInt32,object 和string是null 返回0;string为“”时出错;里面用到了int.parse();【浮点是四舍五入】;char得到的是

ascii码

4字符串切割问题

 注意:Split()字符串如果没有我们所要切割的字符,那么返回的是整个字符串

/// <summary>        /// 将字符串转换成骆驼命名的变量名        /// </summary>        /// <param name="str"></param>        /// <returns></returns>        public string ToCamel(string str)         {             StringBuilder sb = new StringBuilder();            string[] arr = str.Split(' ');            sb.Append((arr[0].Substring(0, 1).ToLower()) + (arr[0].Substring(1).ToLower()));            for (int i = 1; i < arr.Length; i++)            {                            sb.Append((arr[i].Substring(0, 1).ToUpper()) + (arr[i].Substring(1).ToLower()));            }            return sb.ToString();        }

切割后去除多余的空格

static void Main(string[] args)        {            string a = "zhong   guo     nin hao";           string[] b= a.Split(new char[]{' '} ,StringSplitOptions.RemoveEmptyEntries);           foreach (var item in b)           {               Console.WriteLine(item);           }           Console.ReadKey();        }



 

5常常被忽视的switch-case语句

李四的年终奖评定:A级 工资加500,B级不加不减,C级减500;让用户输入东西时一定要加上try catch

  

 static void Main(string[] args)        {            try            {                Console.WriteLine("输入你的等级A B 或 C");                string grade = Console.ReadLine().Trim();                int salary = 8000;                switch (grade)                {                    case "A":                        salary = salary + 500;                        break;                    case "B":                        break;                    case "C":                        salary = salary - 500;                        break;                    default:                        break;                                        }                Console.WriteLine("你的工资为:" + salary);                Console.ReadKey();            }            catch (Exception)            {                Console.WriteLine("输入有误");            }            Console.ReadKey();        }


 

6常量 枚举 结构体

常量
语法:const 类型 常量名=常量值。赋值后,在其他地方不允许赋值。

const是编译时常数(编译时就被替换了),而readyOnly可以做运行时常数

const默认就是静态的,而readyOnly如果设置成静态的就必须显示声明。

 

枚举

定义一种枚举类型,同时要指定这个类型的所有值。(一般和类定义在同一个级别,方便于同一个命名空间下的所

有类都可以使用这个枚举,放在方法中定义无意义)


enum  自定义名称{值1,值2,值3...值n};

 


枚举作用:
限制用户不能随意赋值,只能在定义枚举时列举的值中选择相对应的值,
注意:定义枚举时,值不能是int类型。

如果定义在类中,类名可以直接点出来,用法和常变量差不多
枚举类型的变量都可以强制转换为int类型,枚举的值在定义时,有默认的序号;可以定义时自己指定,只要指定一个后面的会自动加1;
字符串转换成枚举类型:
(自定义枚举类型)(Enum.Parse(typeof(自定义枚举),"待转换的字符串"));

 

结构体:不要写在方法中无意义
存储一个人信息,要声明一组变量。存储N个人的信息,就要声明N组变量,结构体方便存储和记忆。

语法:
访问修饰符 struct 结构名
{
  定义结构成员
}
public struct Person
{
  public string name;  //结构体成员
  public int age;
}
定义结构体后,可以直接声明相应的变量,通过 变量名.成员名 来访问结构的成员。
class Program
{
  Person person;
  person.name="AAA";
  person.age=22;
}

7数组

语法:
数据类型[] 数组名=new 数据类型[数组长度];

int[] score=new int[3];

赋值

int[] score=new int[3]{11,22,33};
int[] score=new int[]{11,22,33};

int[] d = { 1, 5, 6 };
声明数组,如果没赋值,会默认有初始化值,如int类型数组一旦声明,里面的每个元素被初始化为0.

8从小到大冒泡排序


 

public void BubbleSort()        {            int[] arr = { 11, 33, 44, 23, 45, 32, 67, 1, 3, 6, 36, 09, 49 };            for (int i = 0; i < arr.Length - 1; i++)//arr.Length - 1循环的趟数            {                for (int j = 0; j < arr.Length - 1 - i; j++)//每趟比较的次数                {                    if (arr[j] > arr[j + 1])                    {                        int t;                        t = arr[j];                        arr[j] = arr[j + 1];                        arr[j + 1] = t;                    }                }            }        }


 


9参数修饰符out ref

无论在方法声明中还是在方法调用中都要加修饰符out ref

out在方法声明中必须被赋值,用于传出值

ref,可以用于向里传值也可以向外返值,的作用就是讲值类型的数据当成引用类型的数据共同使用

 

 

 

 ------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
原创粉丝点击