c# 随笔

     大三开学好几周了,到现在才认真看有关c#的书,以下是我从中学习到的东西,希望能与各位分享:

  
1、有关变量的命名规则:

       目前普遍使用两种命名方法:①PascalCase: 其规定每个单词的首字母均大写
                                        ② Camel case :其规定除第一个单词外,其余的每个单词的首字母均大写
    目前那种以下划线开头的已经过时了。
 
2、字符串的字面值

     当字符串中含有转义字符时,应使用逐字地的指定的字符串
    如"this  address is c:\\my\\wtq"就等价于@"this   address is C:\my\wtq"
 
3、变量中的声明赋值

      在c#中定义变量时,使用之前一定要对其进行赋值,不然会报告编译错误。
    3.3.1
      ①用户输入
        string UserName=Console.ReadLine();此语句返回的是字符串
      ②类型转换
        double FirstNum = Convert.ToDouble(Console.ReadLine()); 
     3.3.2赋值运算符
      "+"以及"+="可以用于字符串之间的链接。
     3.4命名空间
     ①在.Net中提供应用程序代码容器的方式
     ②也用作.NetFramework中给项分类的一种方式。大多数项都是类型定义
  
4 、流程控制

   4.1 布尔逻辑
         Bool var1,var2,var3;
             var1 = var2 ==var3;
             var1 = var2 ==ture;
              Bool类型的运算只能进行==或者!=运算

     &&与& ||与|在进行运行时,其基本运算结果相同,但执行性能不同。
         执行a&&b表达式时,当a为假时,就不用去判断b的值是否为真还是假,这时候整个表达式的值就是假。这种就可以节省时间了,而 执行a&b表达式时,操作数a与b都必须进行判断真假。这样效率就不是很高了。
          执行a||b表达式时,当a为真时,就不用去判断b的值是否为真还是假,这时候整个表达式的值就是真。这种就可以节省时间了,而 执行a|b表达式时,操作数a与b都必须进行判断真假。这样效率就不是很高了。
  4.2 goto 语句
     
      使用方法:
       Lable:
           .
           .
           .
     goto Lable;
       goto语句尽量少用,如果对于程序逻辑比较简单的时候,使用goto语句是比较高效的,但是,如果程序较为复杂时,整个程序的可读性就不是很好了,让会使编程更加困难。

     4.3
          分支包含以下三种情况:
      ①条件语句:a?b :c;
      ②if语句
      ③switch语句
      对于①的条件语句它是有返回值的
         如string d=a?b:c这是a为真,就把b赋给d;
      对于②的if语句它是没有返回结果的,它只有TRUE或者false
       尽量使用if()
                       {

                       }
                  else{

                       }
          如果条件较多的时候,可以使用
            if()
               .{
                 }
            else if()
                 {
                  }
             else if()
                {
                 }   
            对于③switch(a) 。a可以是字面值,或者是常量
              定义常量时用const Int inttwo = 2;
              
之类的东西代表语句;
              switch()
              {
                   case a:  ;break\return;  
                   case b:  ;break\return;
                  case c:  ;break\return;     
                   defaule:   ;break\rturn;

               } 

     4.4循环
          
              do{
   
                       
                 } while (
             
              while(
             {

              }
         
               for(int = i;i<10;i++)
                 此变量i只能在循环体中使用,不能用于循环以外的语句。
                  注意:goto从外部进入循环是非法的。
       
           4.5程序的稳健性(这只是其中的一个例子):
                do{

                       a=Console.ReadLine();
                      if(a<b)
                      Console.WriteLine("你输入的数据有误,请重新输入");

                  } while(a<b);  



   完整的程序:
        static void Main(string[] args)
        {
            int FirstNum, SecondNun = 20; 
              do
              {
                  FirstNum =Convert.ToInt32( Console.ReadLine());
                  if(FirstNum<SecondNun)
                      Console.WriteLine("the number your enter is error.\nplease    enter                 
     another number"); 
              }while(FirstNum<SecondNun);            
             


   
             运行结果如下:

 


  5.变量的更多内容

         5.11 隐式转        一般将字节数较小的数据类型转换为字节数较大的数据类型(当然也可以相等        例如:ushortchar(等字节)    intdouble (小->大)
        5.12 显式转换
       显式转换发生的情况一般是将字节数比较大的类型转换为字节数较小的类型
       例如: byte destinationByte;
             short  sourceShort

    destinationByte=(byte)sourceShort;
   注意:在这种情况下赋值可能会导致结果溢出;
     例如:sourceShort=281;
     如果执行此句 destinationByte=(byte)sourceShort;将会使destinationByte的值变为25
     因为:281=100011001
             25= 00011001
            255=01111111
    在这时候我们可以采取相应的措施来解决
       比如:checked(expression)
       或者unchecked(expression)
          destinationByte = checked((byte)sourceShort)
               另一种方法是修改配置应用程序:
             ①点击解决方案资源管理器如图:
              
              进行相应的设置如图




        再点击右边的高级,按下图操作

       

5.1.3使用convert命令进行显式转换
 
       int varInt;
            short varShort = 10 ;
            float varFloat = 20;
        varInt = varShort * (short)varFloat;   //此句所得的结果就是类型为int的数值,varInt若是其他类型,则将报错。
              varDouble = Convert.ToDouble("125");
              Console.WriteLine(varInt); 

 5.2复杂的变量类型

   ①枚举类型

     形式:enum Typename

{

Value1

Value2

Value3

 .

 .

 

          Valuen

}

此类型默认情况下使用一个int类型存储   如果想改变这种存储就可以换这种定义:

enum Typename underlyingTypeint

{

Value1

Value2

Value3

 .

 .

 

          Valuen

}

经常出线这种现象

enum Typename

{

Value1=actualval

Value2

Value3=value1

 Value4

 .

 

          Valuen

}

此时value2=value4

 

还有可能出现这种迂回情况容易导致错误

enum

{

Value1=value2

Value2=value1

}

枚举类型定义一般放在命名空间中

namespace test

{

 

    enum Direction

    {

        north,

        south,

        east,

        west

    }

    class Program

    {

}

结构

Struct Typename

{

 

}

③数组的声明:

(1)一维数组:

定义:如:int [] varInt;

初始化的情况:

Const int varInt=5

int [] arrary = {5,3,9,4,3};

int [] arrary = new int [5];默认每个元素都是0.

int [] arrary = new int [varInt]; 默认每个元素都是0.

 

 定义时不可以这样写:

 Int [] array;

 

   Array = new int [5]; 因为定义数组时,必须分配其大小。

 

    给数组赋初值时,还有一点要注意的数组大小必须与元素个数相匹配

   如:

       Int [] array = new int [5] {1,2,3,4,5};

      Int [] array = new int [5] {1,2,3 };这是错误的

还可以 foreach循环来读取数组元素的值,但是不能修改。

 

与此相反,for循环即可读取信息,又可修改信息

foreach (int var in array)

              {

                  Console.WriteLine(var);

              }

(2)多维数组

定义:double [ , ] hillheight = new double [3,4];

赋初值:

double[ ,] hillheight = new double[2, 3] {{4,2,3},{4,5,6}};

或者    double[ ,] hillheight = {{4,2,3},{4,5,6}};

(3)数组的数组(每一行的元素个数可以不一样,严格的来说,就是多维数组的一种 

      赋初值:①  int[][] var2;

            var2 = new int[2][];

            var2[0] = new int[4];

            var2[1] = new int[3];

            var2[0][1] = 2 ; //这里与多维数组不同,因为多维数组时var2[1,2]

   int[][] var2 = {new int[1] {2},new int [2] {3,4} };

int[][] var2;

    var2 =new int [2][] {new int[1] {2},new int [2] {3,4} };

同时也可用foreach读取数组的数组的值,方法是:使用嵌套的foreach()

foreach (int[] vararray in var2)

               {

                   foreach (int var3 in vararray)

                   {

                       Console.WriteLine(var3);

                   }

               }

5.5字符串处理

①字符串string可以转换成char数组

例如:

string MyString = "A string";

            char[] MyChar = MyString.ToCharArray();

 

     foreach (char ch in MyChar)

              {

                  Console.WriteLine(ch);

              }

Console.WriteLine(MyChar.Length);//输出数组的大小。

②将字符串转换为小写

例如:

string userResponse = Console.ReadLine();

            if (userResponse.ToLower() == "wtq")

            {

                Console.WriteLine("你很棒");

}

③将字符串转换为大写

例如:

 string userResponse = Console.ReadLine();

            if (userResponse.ToUpper() == "WTQ")

            {

                Console.WriteLine("你很棒");

            }

④删除额外的空格

例如:

string userResponse = Console.ReadLine();

            userResponse = userResponse.Trim();

            if (userResponse.ToUpper() == "WTQ")

 

            {

                Console.WriteLine("你很棒");

            }

⑤删除额外的字符

例如:

char[] trimChars = { ' ','t','q'};

            string userResponse = Console.ReadLine();

            userResponse = userResponse.Trim(trimChars);

            if (userResponse == "w")

 

            {

                Console.WriteLine("你很棒");

            }

 

   ⑥删除字符串的前面或后面的空格 <string>.TrimStart(),<string>.TrimEnd

例如:

string userResponse = Console.ReadLine();

           

            userResponse = userResponse.TrimStart();

            if (userResponse == "w")

 

            {

                Console.WriteLine("你很棒");

            } 

<string>.PadLeft<string>.PadRight分别在字符串的左边或右边添加空格

例如:string MyString = "Aligned";

            MyString = MyString.PadLeft(10);

            Console.WriteLine(MyString);

        } 

注意:也可以在字符串前加其他字符。

例如:

string MyString = "Aligned";

            MyString = MyString.PadLeft(10,'+');

            Console.WriteLine(MyString);

 

      ⑧分割字符串<string>.Split()

例如:

string MyString = "this is a test";

            char [] Separator = {' ','i'};

            string[] MyWords;

           MyWords = MyString.Split(Separator);

           foreach (string word in MyWords)

           {

               Console.WriteLine(word);

           }

⑨将字符串倒序

 方法一: String text =”wtqwtqwtq”;

char[] cArray = text.ToCharArray();
                      string reverse = String.Empty;//相当于给reverse赋初值
                   for (int i = cArray.Length - 1; i > -1; i--)
                    {
                reverse += cArray[i];
                       }

console.WriteLine(reverse);

方法二:string text = "wtqwtqwtq";

            char[] charArray = text.ToCharArray();

            Array.Reverse(charArray);

            Console.WriteLine( charArray );
   

 









 

posted on 2009-10-09 21:16  wtq  阅读(459)  评论(2编辑  收藏  举报