Data Structure#
There’re two types of variables in C#, reference type and value type.
Enum:
enum Color{
Red=0,
Green=1
}
//equals to
enum Color{
Red,//start from 0 as default
Green
}
int to enum:(Color)val
Arrays and Collections#
Array#
declare array:
new int[10]
new int[10]{xx,xx…};
new int[]{aa,aa};
Collection#
List theList=new List();//can use value type here, not only reference type
theList.Count;//size of the list
class#
when calling same name class with different namespace, it will use class of same namespace first, then System namespace.
fields and properties#
can’t use var to declare fields like var count=0,must use int count=0
const is static, so we can’t use them together like public static const int count=0
rules of naming fields and property: first letter with uppercase is public, first letter with lowercase is private.
Auto-implemented property: remove their private fields.
initiate with default: public MyClass val {get;set;} = new MyClass();
anonymous type#
for the cases:
only use in one function and not need for other functions
only exists for only short time, and will be stored to other places
var val=new {name=‘Alex’, age=12};
Extensions#
class TheExtensionClass{
public int toInt(this string value){
return int.Parse(value);
}
}
//so that the function can be called on string
str.toInt();
function#
out, in and ref#
if use out/in/ref for value type variable, then it will convert to reference type.
must initiate out variable in the function before use it.
default parameter and named parameter#
Default parameter
must declared after non-default parameter
if we don’t want to give value to the first default parameter but want to give the second default parameter, we can’t do this without named parameter
Named parameter:
can call the function and break the sequence of parameters, especially for default parameter
special function:lambda#
for the cases:
short function
var res=theList.Find(MyFunc);
boolean MyFunc(Student aStudent){
return studentName=“abc”;
}
theList.Find(student=>{
return studentName=“abc”;
});
theList.Find(student=> studentName=“abc”);
Event and asynchronous programming#
Event#
for the cases:
when executing monitor function, it will automatically execute the monitored function
declare Action variable in class A:Action action
binding the action variable to f2 (monitored function) of class B:action+=f2
trigger the event: in f3(monitor function) call the action with action();
asynchronous programming
vb.net教程
c#教程
like event
RequestSupport(CallBackFunc)
Exception and log#
Exception#
try{
}catch{
}
try{
}catch(FormatException){
}
try{
}catch(FormatException e){
print e;
print e.Message;
}
Log#
作者: Fanny123
出处:https://www.cnblogs.com/FannyChung/p/csharpbasic.html