1.在物件導向中既然結構體中可以有成員變數也可以有方法等,那為什麼還要有類的存在呢?
:結構體是值型別,而類是引用型別。然後就是值型別和引用型別之間的區別了。
2.string 和
string
有何區別?
: 通過typeof()
的測試可以發現兩者的結果都是
system.string
型別。其實
string
是string
的別名。它們唯一的區別是按照**約定來編寫,還是用類的方式來編寫。
3.如何在c#
控制台應用程式中獲取應用程式的路徑?
例如:string path=system.reflection.assembly.getexecutingassembly().location();
console.writeline(system.io.path.getdirectoryname(path));
4.如何快速的在乙個字串中統計另乙個字串出現的次數。
:可以利用system.text.regularexpressions
命名空間中的
regex類
例如:string test=」hello ,how are you you ,you you youyou」;
int wordcount=0;
foreach(math m in regex.mathches(test,」you」))
wordcount++;
5.如何快速的檢測乙個數是否是2的冪
舉乙個簡單的例子:
大家都知道8是2
的冪,而
8的二進位制為
1 0 0 0,7
的二進位制為
0 1 1 1
那麼 1 0 0 0
& 0 1 1 1
0 0 0 0
大家也知道9不是2
的冪,9
的二進位制為
1 0 0 1, 8
的二進位制為
1 0 0 0
那麼 1 0 0 1
& 1 0 0 0
1 1 1 0
由此可得以下演算法:
if(number
!=0&&
(number&
(number-1
))==0
)則number是2
的冪 6..net中如何實現字串的加密解密
核心**如下:
#region string encryption
string plaintext="this is plain that we will encrypt";
string password="p@$$w0rd";
console.writeline(plaintext);
console.writeln();
desencrypt testencrypt=new desencrypt();
string enctext=testencrypt.encryptstring(plaintext,password);
console.writeline(enctext);
console.writeline();
string plain=testencrypt.decryptstring(enctext,password);
console.writeline(plain);
console.writeline();
#endregion
class desencrypt
static tripledes(string key)//對密碼進行雜湊編碼
md5 md5=new md5scryptoserviceprovider();
tripledes des =new tripledescryptoserviceprovider();
des.key=md5.computehash(encoding.unicode.getbytes(key));
des.iv=new byte[des.blocksize/8];
return des;
public string encryptstring(string plaintext,string password)//加密過程
byte plaintextbytes=encoding.unicode.getbytes(plaintext);
memorystream mystream=new memorystream();
tripledes des=createdes(password);
cryptostream cryptstream=new cryptostream(mystream,des.createencryptor(),cryptostreammode.write);
cryptstream.write(plaintextbytes,0,plaintextbytes.length);
cryptstream.flushfinalblock();
return convert.tobase64string(mystream.toarray());
public string decryptstring(string encryptedtext,string password)//解密過程
byte encryptedtextbytes=convert.frombase64string(encryptedtext);
memorystream mystream=new memorystream();
tripledes des=createdes(password);
cryptostream decryptstream =new cryptostream(mystream,des.createdecryptor(),cryptostreammode.write);
decryptstream.write(encryptedtextbytes,0,encryptedtextbytes.length);
decryptstream.flushfinalblock();
return encoding.unicode.getstring(mystream.toarray());
有關DLL的幾個問題
一 dll被多個程序呼叫問題 win32系統會確保記憶體中只有乙個該dll的拷貝,這是通過記憶體對映檔案來實現的。不同的程序分別將這份dll的 段位址對映到自己的程序空間中,同時不同的程序在自己的程序空間分別有各自的乙份該dll的資料段拷貝。這是因為,在win32環境中,每個程序都有了它自己的位址空...
有關Xshell的幾個問題
用xshell登入虛擬機器中的kali系統時,有時會出現登入不上,但你之前是能成功登入上的,此時,你因該從以下幾點考慮以下 1.sshd服務是否開啟 我用service sshd start 是無法開啟的,同時這條命令也不能很好的執行下去,我用的命令是 etc init.d ssh start 或 ...
有關GitHub倉庫分支的幾個問題
眾所周知,github通過fork成為一種超級儲存庫,讓你可以看到fork網路中的所有提交,對私人倉庫也是如此。舉個例子 如果你 bob 從alice那fork了乙個倉庫p,alice在你fork後使用雜湊x進行 提交,你就可以通過 github.com bob p tree x 訪問這些提交。即使...