Saturday, May 17, 2014

C# 学习笔记 2

我的第二个C#程序

看来每个post是有长度限制的。上次有一段没发出来。

可选变量

直接加入一个默认值就行了,这个默认值一定得是Value type,不可以和ref, out共用。

public int add_one(int x = 23)
{
    return x + 1;
}

打完这个分割线就更爱markdown了。


Var 变量类型

Var在C#里面是直接让编译器去推断变量的类型。如果编译器能推断的话,那么这个var事实上还是会变成一个静态的类型。

例如:

var y = new System.Text.StringBuilder();
Console.WriteLine(y.GetType()); // System.Text.StringBuilder


var x = 5;
x = "Hello"; // Compile time error, x is int

运算符的优先级?

这个还是免了吧,直接用括号多爽。

循环的语法糖

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloCSharp
{

    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0, prev_Fib = 1, cur_Fib = 1 ; i < 10; i++)
            // The initialization clause can do more.
            {
                Console.WriteLine(prev_Fib);
                int newFib = prev_Fib + cur_Fib;
                prev_Fib = cur_Fib; cur_Fib = newFib;
            }
            // And this one won't work, because we exited the scope of for loop.
            Console.WriteLine(prev_Fib); //!!!!
            Console.ReadLine();
        }
    }
}

break, continue, goto

continue以前没怎么用过,作用就是在一个循环里面直接跳过后面的语句,直接到下一个变量,像是筛选不合格一样的。
Python可能会这么写:

print i for i in range(0, 10) if i %2 != 0

C#:

for (int i = 0; i < 10; i ++)
{
    if ((x % 2) == 0)
        continue;

    Console.WriteLine(i);
}

Written with StackEdit.

No comments:

Post a Comment