C# basic

1. output

Console.WriteLine("hello world");

2. naming convention

variable: start with lower-case, use camel-case

double thePrice = 14.95;

for the rest (class name, method name, const): start with upper-case, use camel-case

const int HomeRunRecord = 61;

3. value type

similar to primitive in jave

for example: int, float, bool

4. out

The out keyword causes arguments to be passed by reference. This is like the ref keyword, except that ref requires that the variable be initialized before it is passed. To use an out parameter, both the method definition and the calling method must explicitly use the out keyword.

class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);
        // value is now 44
    }
}

 5. ?? operator

int a = (x ?? 0);

equals to

int a = (x != null? x:0);

 6. is (check type compatible)

static void Test(object o)
    {
        Class1 a;

        if (o is Class1)
        {
            Console.WriteLine("o is Class1");
            a = (Class1)o;
            // Do something with "a."
        }
    }

7. compare string

not like Java, in which == and equals are different.

for string in c#, == and Equals() are the same.

if (s1.Equals(s2)){}

equals 

if (s1 == s2) {}

8. define 2d array

string[,] strs = new string[3, 4];

 access element in 2d array

strs[1, 2] = "hello";

9. List

var fruits = new List<string>();
fruits.Add("apple");

10. foreach

foreach (var item in fruits)
{
        Console.WriteLine(item);
}

11. dictionary

            var inventory = new Dictionary<string, double>();
            inventory.Add("apples", 56);
            if (inventory.TryGetValue("apples", out value))
            {
                Console.WriteLine("apple value:" + value);
            }

12. encapsulation

class Fruit
    {
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

    }

the second line is a method call

            var f1 = new Fruit();
            f1.Name = "apple";

 below is a same definition of name

public string Name { get; set; }

13. override method

        public override string ToString()
        {
            return base.ToString();
        }

14. extend class

     class Produce
    {
        private string name;

        public Produce(string name)
        {
            Name = name;
        }
     }

    class Fruit : Produce
    {
        public Fruit(string name):
            base(name)
        {

        }
    }

15. as, is

 class A
    {
        
    }
    class B : A
    {

    }

    class Program
    {
        static void Main(string[] args)
        {
            B obj = new B();
            A obj2 = obj as A;
            if (obj is A)
            {
                Console.WriteLine("obj is A");
            }
            Console.ReadKey();
        }
    }

"as" is safer than below, it return null if failed to cast

A obj2 = (A)obj;
原文地址:https://www.cnblogs.com/phoenix13suns/p/5140994.html