有關c 的幾個問題

2021-07-10 07:37:47 字數 3079 閱讀 9568

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 訪問這些提交。即使...