public class Block
{
public string Hash { get; set; }
public int Nonce { get; set; } = 0;
public Block(string data)
{
Data = data;
Hash = CalculateHash();
<------------------(1)
}
public string CalculateHash()
{
SHA256 sha256 = SHA256.Create();
byte[] inputBytes = Encoding.("{Data}-{Nonce}");
byte[] outputBytes = sha256.ComputeHash(inputBytes);
return Convert.ToBase64String(outputBytes);
}
public void Mine(int difficulty)
{
var leadingZeros = new string('0', difficulty);
while (Hash == null || Hash.Substring(0, difficulty) != leadingZes)
{
Nonce++;
Hash = CalculateHash();
<-----------------------(2)
}
}
سلام . سوالم اینه کامپایلر property هش رو از کدوم خط میخونه ؟ اخرین داده ای که توش ذخیره میشه از (1) هست یا (2) ؟؟
بذارید سالم رو واضح تر بگم
اگر کامپایلر به ترتیب خط ها رو میخونه میره پایین ، چرا تو (1) اررور نمیده (چون متد محاسبه هش بعد از اون تعریف شده و هنوز بهش نرسیده)
اگر به ترتیب نمیخونه مبنای مقدار دهی به هش چیه ؟ (1) یا (2) ؟ چرا ؟
سلام
این مسئله یکم جای تعمال داره ولی این رو بدونین که توابع و کلاس ها و متغییر ها در درجه اول کامپایل میشن که مانند کد خودتون قبل از رسیدن کامپایلر به متد اون رو میشناسه
نکته دیگه ای هم که هست کامپایلر از بالا شروع میکنه به اسم تابع که میرسه یهو میپره میره جایی که تابع رو نوشتین کد های تابع رو خط به خط میخونه و دوباره بر میرده به همونجایی که بود