switch(变量){
case 值:
//操作
break;
.........
default://以上情况斗没有发生
break;
}
int i = num<100?num:99; //如果num<100则赋值我num,否则赋值为99
static void Main(string[] args)
{
Func<int, int, string> func = ReturnFunction;
Console.WriteLine(func(1, 2));
Console.ReadKey();
}
static string ReturnFunction(int a, int b) {
return "a+b=" + (a + b);
}Func通过指定泛型<T1,T2...Return>,前面指定参数的类型,最后一个指定返回的类型
Func对比Action就是它可以承载带返回的函数
//Action无返回值
static void Main(string[] args)
{
Action<string> a = NormalFunc;
a("Hei");
Console.ReadKey();
}
static void NormalFunc(string str) {
Console.WriteLine("I am NORMAL FUNCTION " + str);
}Action是一个内置委托类型,通过泛型<T1,T2...>指定函数参数
using System.Diagnostics; Stopwatch stopwatch = new Stopwatch();//就是这个类 stopwatch.Reset();//重置,不然会累计 stopwatch.Start();//开始计时 int res = getGYSByXJF2(a, b);//计算这个方法的用时 stopwatch.Stop();//停止计时 Console.WriteLine(res + " 用时:" + stopwatch.ElapsedMilliseconds);//毫秒计算
Random r = new Random(); int random_index = r.Next(0, 100);//包前不包后
static void Pri(params string[] strs) {
foreach (string str in strs) {
Console.WriteLine(str);
}
}
Pri("hello", "i", "am");
string[] strss = { "you", "is", "me" };
Pri(strss);params只能在最后一个参数上声明
作用就是声明一个参数(数组)后,可以传入多个这个类型的参数
可以不传参数,主要看函数怎么用这个参数
C#中所有引用类型都是直接继承自System.Object;而值类型是继承自System.ValueType,而System.ValueType还是继承自System.Object的,它没有添加任何方法,只是覆盖了一些方法,让它更适合值类型。
string[] panelNames = Enum.GetNames (typeof(UIPanelType));
返回一个字符串的数组,UIPanelType是一个枚举类型
Enum在System命名空间下
public static class Dict {
public static tValue tryGet<tType,tValue>(this Dictionary<tType,tValue> dict,tType t)
{
tValue v;
dict.TryGetValue (t, out v);
return v;
}
}
Dictionary<UIPanelType,BasePanel> uiPanelScriptDict = new Dictionary<UIPanelType,BasePanel> ();
BasePanel panel = uiPanelScriptDict.tryGet<UIPanelType,BasePanel> (type);扩展方法要放在一个静态类的静态方法中。
返回值等其他东西都照常语法,特殊的在于第一个参数,这里先用this再接要扩展的类,表名了扩展的这个TrtGet方法是在Dictionary里面的。
调用的时候,直接使用第一个参数类的对象调用方法,参数忽略第一个参数。