操作符重载 一定为public static oprator 。。(。。)
c# 中类名和变量名是可以相同的
vs 代码补全的快捷键为 ctrl + j 习惯了eclipse 下的alt + / 还有些不习惯vs
属性 可以定义为
public int price{set ; get;}
C# 中的单例模式 竟然 只是 在类前加一个 static
两个对象比较 是不是指向同一对象 object.ReferenceEquals(site, site2);
C# new override 不同
new 是不管原来的方法 而在子类中重新定义了一个方法
而 override 则是覆盖原来的方法
class A{
public virtual void print(){
Console.WriteLine("a");
}
}
class B : A{
public new void print(){
Console.WriteLine("b");
}
}
class C : A{
public overried void print(){
Console.WriteLine("c");
}
}
A a = new A();
A b = new B();
B b1 = new B();
A c = new C();
a.print();
b.print();
c.print();
结果为:
a
a
b
c
第二个之所以 为a 是因为 A 所指向的对象 里面有两个print 函数 而 因为是A类指向,所以返回,A的成员函数
如果遇到定义的string过长需要换行的时候 在字符串前面加个 @
eg: var test = @"good
moring
YangMeiMei ".
c# 中类名和变量名是可以相同的
vs 代码补全的快捷键为 ctrl + j 习惯了eclipse 下的alt + / 还有些不习惯vs
属性 可以定义为
public int price{set ; get;}
C# 中的单例模式 竟然 只是 在类前加一个 static
两个对象比较 是不是指向同一对象 object.ReferenceEquals(site, site2);
C# new override 不同
new 是不管原来的方法 而在子类中重新定义了一个方法
而 override 则是覆盖原来的方法
class A{
public virtual void print(){
Console.WriteLine("a");
}
}
class B : A{
public new void print(){
Console.WriteLine("b");
}
}
class C : A{
public overried void print(){
Console.WriteLine("c");
}
}
A a = new A();
A b = new B();
B b1 = new B();
A c = new C();
a.print();
b.print();
c.print();
结果为:
a
a
b
c
第二个之所以 为a 是因为 A 所指向的对象 里面有两个print 函数 而 因为是A类指向,所以返回,A的成员函数
如果遇到定义的string过长需要换行的时候 在字符串前面加个 @
eg: var test = @"good
moring
YangMeiMei ".