1. 程式人生 > >從前有一個部落格他有一個媳婦兒

從前有一個部落格他有一個媳婦兒

C#內建引用型別:object  String  Dynamic

C#完全面向物件,沒有所謂的全域性變數,取消了指標的使用,例項宣告用new,拋棄了多繼承,擁有自動記憶體管理

資料輸出轉換相關:

using System;

namespace test1
{
	class test1{
		static void Main(String[] args)
		{
			//顯示強制轉換
			double a = 22.23;
			int i = (int)a;
			Console.WriteLine(i);
			
			//C#內建型別轉換方法
			float f = 0.12f;
			Console.WriteLine(f.ToString());
			
			//object,型別檢測在編譯時發生
			object o;
			o = 100;  //裝箱
			Console.WriteLine("o = {0}",o);
			int b = (int)o; //拆箱
			Console.WriteLine("b = {0}",b);
			
			//dynamic,型別檢測在執行時發生
			dynamic c = 99,d = 1.23;
			Console.WriteLine("c = {0},d = {1}",c,d);
			
			//字串String
			String str1 = "gbb";
			String str2 = @"/ybb"; //字串前面加@,裡面的特殊字元當做普通字元輸出
			String str3 = "a b" +  //字串裡可以任意換行、空格
				"c";
			Console.WriteLine(str1);
			Console.WriteLine(str2);
			Console.WriteLine(str3);
			
			Console.ReadKey();
		}
	}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            String str1 = "gbb" + Environment.NewLine + "ybb"; //字串中有換行回車的正確方式
            Console.WriteLine("str1:\n{0}",str1);

            String str2 = "gbb\r\nybb"; //字串中硬編碼了回車符和換行符,一般不建議,這樣有可能不支援跨平臺
            Console.WriteLine("str2:\n{0}",str2);

            //字串可以使用“+”連線
            String str3 = "abc" + " " + "def";
            Console.WriteLine("str3:{0}",str3);

            Console.ReadKey();

        }
    }
}


整數常量的字首、字尾:均不區分大小寫

0x  十六進位制   0  八進位制   無字首  十進位制

字尾:

U unsigned  L  long

運算子描述例項 :

sizeof()返回資料型別的大小。sizeof(int),將返回 4. 

typeof()返回 class 的型別。typeof(StreamReader); 

&返回變數的地址。&a; 將得到變數的實際地址。

 *變數的指標。*a; 將指向一個變數。

 ? :條件表示式 如果條件為真 ? 則為 X : 否則為 Y is判斷物件是否為某一型別。

If( Ford is Car) // 檢查 Ford 是否是 Car 類的一個物件。

 as強制轉換,即使轉換失敗也不會丟擲異常。

Object obj = new StringReader("Hello");
StringReader r = obj as StringReader;

using System;

namespace test1
{
	class test1{
		static void Main(String[] args)
		{
			Console.WriteLine("input a inteager:");
			int num;
			num = Convert.ToInt32(Console.ReadLine()); //readLine()只接受字串
			Console.WriteLine("the number input:{0}",num);
			
			//進位制轉換
			decimal d = (decimal)0x20; 
			Console.WriteLine("轉換為十進位制為:{0}",d);
			                 
			Console.ReadKey();
		}
	}
}

訪問修飾符進行C#的封裝:

public  任何公有成員可以被外部類訪問

private  同一個類中的函式成員可以訪問

protected  子類訪問基類的成員函式成員變數,有助於實現繼承

internal  可被同一應用程式中的任何類或方法訪問

protected internal  允許一個類將其成員變數和成員函式對同一應用程式內的子類以外的其他的類物件和函式進行隱藏

引用 ref

using System;

namespace test1
{
	class test1{
		public int num = 50; //不加public則不能被其他類呼叫
		
		public int getMax(ref int a,ref int b) //傳引用,public作用同上
		//protected internal int getMax(ref int a,ref int b) //用protected internal也可以,不太明白,做個標記
		{
			if(a > b)
			{
				return a;
			}
			else 
			{
				return b;
			}
		}
	}
	
	class test2{
		public static void Main(String [] args)
		{
			test1 t = new test1();
			int x = 20,y = 30;
			
			Console.WriteLine("The Max:{0},the number:{1}",t.getMax(ref x,ref y),t.num);
			
			Console.ReadLine();
		}
	}
		
}

可空型別&空值合併
using System;

namespace test1
{
	class test1
	{
		public static void Main(String [] args)
		{
			//可空型別   ?
			bool ?val = new bool?();
			int ? num1 = null;
			int ? num2  = 20;
			double ? num3 = null;
			float ? num4 = 1.23f;
			double ? num5 = new double?();
	
			Console.WriteLine("{0},{1},{2},{3},{4},{5}",val,num1,num2,num3,num4,num5);
			
			//null的合併運算   ??
			int num;
			num = num1 ?? 9;
			Console.WriteLine("num:{0}",num);//第一個數為空,返回第二個數的值
			num = num2 ?? 9;
			Console.WriteLine("num:{0}",num);//第一個數非空,返回第一個數的值
			
			Console.ReadLine();
		}
	}
}