已采納回答 / CashQQJ
題主所指的new是子類里隱藏父類方法的關(guān)鍵字,不是新建實例關(guān)鍵字。virtual是虛函數(shù)關(guān)鍵字,修飾父類里的函數(shù),子類可以用override重寫該函數(shù)。virtual一般用在父類里,new一般用在子類里,其是成員修飾符。public是訪問修飾符,用來限制訪問權(quán)限。在c#里還有一種修飾符是類修飾符,例如:abstract。書寫順序習(xí)慣上一般是:訪問修飾符 + 類修飾符,或者:成員修飾符 +?類修飾符但是不按照上面的順序書寫,編譯器也不會報錯,只是不太常用而已。
2018-04-18
已采納回答 / 湯姆oldTom
因為oi是Object類型的變量(或者叫引用),所以可以先將它轉(zhuǎn)化為字符串類型后再輸出打印,然后oi這個變量輸出的3就是字符串類型的而非Object類。
2018-04-15
new 和 virtual/override 的區(qū)別 :
new :
1.基類的引用指向派生類的實例,調(diào)用基類的方法;
2.派生類的引用指向派生類的實例,調(diào)用派生類的方法;
virtual/override :
1.基類的引用指向派生類的實例,調(diào)用派生類的方法;
2.派生類的引用指向派生類的實例,調(diào)用派生類的方法;
new :
1.基類的引用指向派生類的實例,調(diào)用基類的方法;
2.派生類的引用指向派生類的實例,調(diào)用派生類的方法;
virtual/override :
1.基類的引用指向派生類的實例,調(diào)用派生類的方法;
2.派生類的引用指向派生類的實例,調(diào)用派生類的方法;
2018-04-11
public void isHappy<T>(T target){
console.WriteLine("happy:"+target.ToString());
}
定義一個人的類 class Person{}
使用 var dog = new Dog("A");
dog.isHappy<Person>(new Person());
dog.isHappy<int>(3);
console.WriteLine("happy:"+target.ToString());
}
定義一個人的類 class Person{}
使用 var dog = new Dog("A");
dog.isHappy<Person>(new Person());
dog.isHappy<int>(3);
public class Cage<T>{
T[] array;
readonly int Size;//大小
int num;//裝了多少
public Cage(int n){Size = n;
num = 0;
array = new T(Size);
}//構(gòu)造涵數(shù)
public void Putin(T pet){
if(num < Size){array[num++]=pet;}
else{Console.WriteLine("cage is full")}
}
} readonly 只讀的
T[] array;
readonly int Size;//大小
int num;//裝了多少
public Cage(int n){Size = n;
num = 0;
array = new T(Size);
}//構(gòu)造涵數(shù)
public void Putin(T pet){
if(num < Size){array[num++]=pet;}
else{Console.WriteLine("cage is full")}
}
} readonly 只讀的