很久没有学习c#的一些基础知识了,发现自己的桌面上下了一本c#完全手册的书,于是从简入难,再会回顾一下基础知识,温故而知新嘛。
本文纯粹是学习记录,大部分无原创成分,如有侵权请告知。

--- c# 传值:
如果是值参数,swap不能实现换值:

  1.  static void Swap(int x, int y) 
  2.  { 
  3.      int temp = x; 
  4.      x = y; 
  5.      y = temp; 
  6.  
  7.  } 
  8.  static void Main() 
  9.  { 
  10.      int i = 1, j = 2; 
  11.      Swap(i,j); 
  12.      Console.WriteLine("i={0},j={1}",i,j); 
  13.  } 
  14. 返回 :  i=1,j=2 

----c# 传址
引用型参数以ref修饰声明:
 

  1. static void Swap(ref int x, ref int y) 
  2.     int temp = x; 
  3.     x = y; 
  4.     y = temp; 
  5. static void Main() 
  6.     int i = 1, j = 2; 
  7.     Swap(ref i, ref j); 
  8.     Console.WriteLine("i={0},j={1}", i, j); 
  9. 返回值: i=2,j=1 

---- 输出型参数:
输出型参数加out
 

  1. string s; 
  2. void F(ref string a, ref string b) 
  3.     s = "1"
  4.     a = "2"
  5.     b = "3"
  6. void G() 
  7.     F(ref s, ref s); 
  8.  
  9. static void SplitPath(string path, out string dir, out string name) 
  10.     int i = path.Length; 
  11.     while (i > 0) 
  12.     { 
  13.         char ch = path[i - 1]; 
  14.         if (ch == '\\' || ch == '/' || ch == ':') break
  15.         i--; 
  16.     } 
  17.     dir = path.Substring(0, i); 
  18.     name = path.Substring(i); 
  19. static void Main() 
  20.     string dir, name; 
  21.     SplitPath("c:\\Temp\\test1.xls"out dir, out name); 
  22.     Console.WriteLine(dir); 
  23.     Console.WriteLine(name); 

--- 数组类型的参数:
args用法; 循环些数组的方法:  foreach(int i in args) Console.Write("{0}",i);

  1. static void F(params int[] args) 
  2.     Console.WriteLine("Array contains {0} elements:", args.Length); 
  3.     foreach (int i in args) Console.Write("{0}",i); 
  4.     Console.WriteLine(); 
  5. public static void Main() 
  6.     int[] a ={ 1, 2, 3 }; 
  7.     F(a); 
  8.     F(10,20,30,40); 
  9.     F(); 

 

--- 类的声明和调用例子:

  1. class Student 
  2.         { 
  3.             public string s_name; 
  4.             public int s_age; 
  5.             public float s_weight; 
  6.             public Student(string n, int a, float w) 
  7.             { 
  8.                 s_name = n; 
  9.                 s_age = a; 
  10.                 s_weight = w; 
  11.             } 
  12.             public int max_age(int x, int y) 
  13.             { 
  14.                 if (x > y) return x; 
  15.                 else return y; 
  16.             } 
  17.             public float max_weight(float x, float y) 
  18.             { 
  19.                 if (x > y) return x; 
  20.                 else return y; 
  21.             } 
  22.         } 
  23.         class Test 
  24.         { 
  25.             public static void Main() 
  26.             { 
  27.                 Student s1 = new Student("Mike", 21, 70); 
  28.                 Student s2 = new Student("John", 21, 70); 
  29.                 if (s1.max_age(s1.s_age, s2.s_age) == s1.s_age) 
  30.                     Console.WriteLine("{0}'s age is bigger than {1}'s", s1.s_name, s2.s_name); 
  31.                 else 
  32.                     Console.WriteLine("{0}'s age is bigger than {1}'s", s1.s_name, s2.s_name); 
  33.                 if (s1.max_weight(s1.s_weight, s2.s_weight) == s1.s_weight) 
  34.                     Console.WriteLine("{0}'s age is weighter than {1}'s", s1.s_name, s2.s_name); 
  35.                 else 
  36.                     Console.WriteLine("{0}'s age is weighter than {1}'s", s1.s_name, s2.s_name); 
  37.  
  38.             } 
  39.         } 

---- 类的声明和调用,还有方法的重载:

 

  1. class Student  
  2.     public string s_name; 
  3.     public int s_age; 
  4.     public float s_weight; 
  5.  
  6.     public Student(string n,int a, float w) 
  7.     { 
  8.         s_name  = n; 
  9.         s_age = a; 
  10.         s_weight = w; 
  11.     } 
  12.     public float max(float x, float y) 
  13.     { 
  14.         if (x > y) return x; 
  15.         else return y; 
  16.     } 
  17.     public int max(int x, float y) 
  18.     { 
  19.         if (x > y) return x; 
  20.         else return y; 
  21.     } 
  22. class Test 
  23.     public static void Main() 
  24.     { 
  25.         Student s1 = new Student("Mike",21,70); 
  26.         Student s2 = new Student("John",21,70); 
  27.         if (s1.max(s1.s_age, s2.s_age) == s1.s_age) 
  28.             Console.WriteLine("{0}'s age is bigger than {1}'s", s1.s_name, s2.s_name); 
  29.         else 
  30.             Console.WriteLine("{0}'s age is smaller than {1}'s", s1.s_name, s2.s_name); 
  31.         if (s1.max(s1.s_weight, s2.s_weight) == s1.s_weight) 
  32.             Console.WriteLine("{0}'s weight is bigger than {1}'s", s1.s_name, s2.s_name); 
  33.         else 
  34.             Console.WriteLine("{0}'s weight is smaller than {1}'s", s1.s_name, s2.s_name); 
  35.     } 

---- 构造函数与析构函数;
构造函数是在初始化类和实例的时候第一个开始调用的:
如果缺省,系统自动创建;
 

  1. class Vehicle 
  2.     public int wheels; 
  3.     protected float weight; 
  4.     public Vehicle() { ;} 
  5.     public Vehicle(int w, float g) 
  6.     { 
  7.         wheels = w; 
  8.         weight = g; 
  9.     } 
  10.     public void show() 
  11.     { 
  12.         Console.WriteLine("the wheel of vehicle is :{0}",wheels); 
  13.         Console.WriteLine("the weight of vehicle is :{0}",weight); 
  14.     } 
  15. class train 
  16.     public int num; 
  17.     private int passeners; 
  18.     private float weight; 
  19.     public train(){;} 
  20.     public train(int n,int p,float w) 
  21.     { 
  22.         num = n; 
  23.         passeners = p; 
  24.         weight = w; 
  25.     } 
  26.     public void show() 
  27.     { 
  28.         Console.WriteLine("the number of train is :{0}", num); 
  29.         Console.WriteLine("the weight of train is :{0}", weight); 
  30.         Console.WriteLine("the number of passenger is :{0}", passeners); 
  31.     } 
  32. class car : Vehicle 
  33.     int passengers; 
  34.     public car(int w, float g, int p) 
  35.         : base(w, g) 
  36.     { 
  37.         wheels = w; 
  38.         weight = g; 
  39.         passengers = p; 
  40.     } 
  41.     new public void show() 
  42.     { 
  43.         Console.WriteLine("the wheel of car is :{0}",wheels); 
  44.         Console.WriteLine("the weight of car is :{0}", weight); 
  45.         Console.WriteLine("the passengers of car is :{0}", passengers); 
  46.     } 
  47. class Test 
  48.     public static void Main() 
  49.     { 
  50.         Vehicle v1 = new Vehicle(4, 5); 
  51.         train t1 = new train(); 
  52.         train t2 = new train(10, 100, 100); 
  53.         car c1 = new car(4, 2, 4); 
  54.         v1.show(); 
  55.         t1.show(); 
  56.         t2.show(); 
  57.         c1.show(); 
  58.     } 

 

--- 编辑操作符:
作用就是定义一种操作符来批量修改类里面的属性.

  1. class player 
  2.        { 
  3.            public int neili; 
  4.            public int tili; 
  5.            public int jingyan; 
  6.            public int neili_r; 
  7.            public int tili_r; 
  8.            public player() 
  9.            { 
  10.                neili = 10; 
  11.                tili = 50; 
  12.                jingyan = 0; 
  13.                neili_r = 50; 
  14.                tili_r = 50; 
  15.            } 
  16.            public static player operator ++(player p) 
  17.            { 
  18.                p.neili = p.neili + 50; 
  19.                p.tili = p.tili + 100; 
  20.                p.neili_r = p.neili; 
  21.                p.tili_r = p.tili; 
  22.                return p; 
  23.            } 
  24.            public void show() 
  25.            { 
  26.                Console.WriteLine("Tili:{0}", tili); 
  27.                Console.WriteLine("Jingyan:{0}", jingyan); 
  28.                Console.WriteLine("Neili:{0}", neili); 
  29.                Console.WriteLine("Tili_full:{0}", tili_r); 
  30.                Console.WriteLine("Neili_full:{0}", neili_r); 
  31.            } 
  32.            class Test 
  33.            { 
  34.                public static void Main() { 
  35.                    player man = new player(); 
  36.                    man.show(); 
  37.                    man++; 
  38.                    Console.WriteLine("Now upgrading ...."); 
  39.                    man.show(); 
  40.                } 
  41.            } 
  42.        } 

 

---- 杨辉三角,用二维数组实现:
 

  1. static void Main(string[] args) 
  2.         { 
  3.             int[,] a = new int[5, 5]; 
  4.             a[0, 0] = 1; 
  5.             for (int i = 1; i < 5; i++) 
  6.             { 
  7.                 a[i, 0] = 1; 
  8.                 a[i, i] = 1; 
  9.                 for (int j = 1; j < i; j++) 
  10.                 { 
  11.                     a[i, j] = a[i - 1, j - 1] + a[i - 1, j]; 
  12.                 } 
  13.             } 
  14.             for (int i = 0; i < 5; i++) 
  15.             { 
  16.                 for (int j = 0; j <= i; j++) 
  17.                 { 
  18.                     Console.Write("{0}",a[i,j]); 
  19.                 } 
  20.                 Console.WriteLine(); 
  21.             } 
  22.         } 

输出结果如下:

1
11
121
1331
14641

 

+++ 静态类和非静态类区别:
静态域申明: static修饰符,不加则为非静态域; 静态域和非静态域分数静态变量与非静态变量;  静态域无论建立多少该类的实例,内存中只有一个静态数据拷贝,所以当这个的第一个实例建立时,域被初始化,以后在创建新对象时就不需要再做初始化了. 非晶态类实例化相反,每次都要创建一份单独的拷贝。