摘自老師的課件
目錄:
可用var關鍵字聲明局部變量,此時變量的類型由變量後面的初始化表達式進行推斷
例:
var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] {1, 2, 3};
注意(1)使用var關鍵字定義的變量必須被初始化。如下面的代碼是錯誤的。
var num; //var變量未初始化
num = 10;
注意(2)var關鍵字只能用於聲明局部變量(包括在for、foreach語句中使用的變量),而不能用於聲明其他變量。
(3)var變量和object類型變量完全不同。使用object類型聲明的變量是弱類型,可以被賦予任何類型的值,而使用var關鍵字聲明的變量與普通變量一樣,仍然是強類型變量。var變量被初始化時,其類型即被確定。以後不可以被賦予其他類型的值。
二:. 對象和集合初始化
對象初始化器
C#的對象初始化器(Object Initializer)可以很好的實現這一功能。其語法如下。
new 類名(){屬性1=值1, 屬性2=值2, … , 屬性N=值N};
static class 封裝類名{
返回類型 擴展方法名(this 擴展類名 變量名0, 參數列表) {
方法體
}
}
甚至當沒有某個類的源代碼,也可以通過擴展方法向類中添加方法。
例如,可以向系統類String添加一些方法。
應該慎重使用擴展方法,只有在用普通方法無法完成功能時,才應考慮使用擴展方法。
擴展方法與普通靜態方法的區別在於其方法的第一個參數前面有一個this關鍵字,這個this關鍵字是擴展方法的標誌。
新聞列表中,如果新聞內容過長,則只顯示前面固定長度的內容,後面加省略號。
爲string類添加一個方法,abstractText,帶一個int型參數n,獲取前n個字符。如果不超過n個字符,則返回全部,否則返回前n個字符加省略號。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cs
{
class Program
{
static void Main(string[] args)
{
//student s = new student() { id = "bzu001", name = "zhangsan", gender = "M", age = 20 };
//s.print();
//string t = "123";
//int n = t.ToInt();
//int m = n * n;
//Console.WriteLine(m);
//Console.ReadLine();
string s,s2;
int n;
Console.WriteLine("請輸入一個新聞標題:");
s = Console.ReadLine();
Console.Write("要截取的字符個數:");
n = Console.ReadLine().ToInt();
s2 = s.abstractText(n);
Console.WriteLine(s2);
Console.ReadLine();
}
}
static class studentExt
{
public static void print(this student s)
{
Console.WriteLine("id:{0}\tname:{1}\tgender:{2}\tage:{3}\t", s.id, s.name, s.gender, s.age);
}
}
static class StringEet
{
public static int ToInt(this string s)
{
return int.Parse(s);
}
public static string abstractText(this String s, int n)
{
if (s.Length <= n)
return s;
return s.Substring(0, n) + "...";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cs
{
public class student
{
public string id { get; set; }
public string name { get; set; }
public string gender { get; set; }
public string major { get; set; }
public int age { get; set; }
public int grade { get; set; }
public int theClass { get; set; }
}
}
運行圖如下: