Non primitive type
Class
public class Person
{
public string Name;
public void Greet()
{
Console.WriteLine("Hi, my name is " + Name);
}
}
Struct
Struct is similar to class. But, it's smaller and less powerful. It's useful for creating a commonly reused simple object. For example, a point has x and y.
public struct Point
{
public int X;
public int Y;
}
Array
In c#, array has a fixed size.
// init an array with ten 0
int[] nums = new int[10];
// init an array with the content.
int[] counts = new int[3] {1, 2, 3};
// get an element of an array by index
Console.WriteLine(nums[0]);
String
String is immutable. If you want to build a complex string, use StringBuilder
class.
To join the string:
// option 1
const string name = firstName + " " + lastName;
// option 2
const string name = string.Format("{0} {1}", firstName, lastName);
// option 3
const string[] words = new string[2] {firstName, lastName};
const string name = string.Join(" ", words);
Enum
public enum PayMethod
{
Cash = 0,
Card = 1,
Phone = 2
}
var method = PayMethod.Card
By default, the elements of enum
is int
. We can set it to byte
.
public enum PayMethod : byte
// int to enum
const int methodId = 1;
var method = (PayMethod)methodId;
// enum to string
string methodName = method.ToString();
// string to enum
var method = (PayMethod)Enum.Parse(typeof(PayMethod), "Card");
Value type vs Reference type
Value type includes primitive
and struct
. It is allocated on the stack. Memory allocation is done automatically. It will be removed immediately when it's out of memory.
Reference type inclues non primitive
. It is allocated on the heap. Memory allocation is done by manually new
. The memory is released by garbage collection of CLR.