對不起,我的英語不好
。所以我試著做一個分數類
我試著做一個分數類。
using System;
using System.Collections.Generic;
using System.Text.Document; using System.Text.Document
使用System.Threading.Tasks;
namespace Math
{
class Fraction {
{
static int[] fraction = new int[2] 。
public Fraction(int numer, int denom)。
{
Console.WriteLine($"Numerator & Denominator: {numer}/{denom}。
")。)
fraction[0] = numer;
fraction[1] = denom;
}
public int[] GetFraction(Fraction frac)。
{
return分數。
}
public Fraction Multiply(Fraction frac1 /* Ignored */, Fraction frac2)
{
//* frac1的值是30/40。
//frac2的值是100/200。
Console.WriteLine("Fraction 1 Numerator: " GetNumer(frac1)); // Print 100
Console.WriteLine("Fraction 1 Denominator: " GetDenom(frac1)); // Print 200
Console.WriteLine("Fraction 2 Numerator: " GetNumer(frac2)); // Print 100
Console.WriteLine("Fraction 2 Denominator: " GetDenom(frac2)); // Print 200
int numer = GetNumer(frac1) * GetNumer(frac2); // Return 10000 (Result of 100 * 100)
int denom = GetDenom(frac1) * GetDenom(frac2); // Return 40000 (200 * 200的結果)
分數 result = new Fraction(numer, denom);
return result。
}
static public void Print(Fraction frac)
{
Console.WriteLine($"{GetNumer(frac)}/{GetDenom(frac)}") 。
}
static public int GetNumer(Fraction frac)
{
return frac.GetFraction(frac)[0]。
}
static public int GetDenom(Fraction frac)
{
return frac.GetFraction(frac)[1]。
}
}
}
但是當我制作該類的實體并試圖呼叫Multiply方法時。只有 "frac2 "引數被乘以
。using System;
namespace Math
{
class Program {
{
static void Main(string[] args)?
{
Console.WriteLine("Math")。
Console.WriteLine("----")。
分數frac2 = new Fraction(30 /* Numerator */, 40 /* Denominator */) 。
分數frac1 = new Fraction(100, 200) 。
Fraction.Print(frac1.Multiply(frac1 /* I literally put the frac1 in there but only frac2 gets noticed */, frac2))。
}
}
}
請問我不知道發生了什么? 謝謝你
我使用的是.NET 5.0 (Visual Studio)
請停止堆疊溢位的 "大部分代碼"
uj5u.com熱心網友回復:
當你制作靜態的東西時,永遠只有一個。通過使容納分子和分母的陣列成為靜態,你最終只有一個分數,其值是最近定義的那些。
這段代碼:
var f1 = new Fraction(100,200)。
Fraction.Print(f1)。
var f2 = new Fraction(3,4) 。
Fraction.Print(f1)。
即使最后一行 "列印f1",列印的值也是3/4,因為你的代碼只支持記憶一個數字/代號,即最近新的一個
移除所有的靜態資料;它正在積極地阻礙你。在C#程式中,很少有理由使資料容器成為靜態的--不要把它作為一個例行公事來做
在C#程式中,很少有理由使資料容器成為靜態的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/310490.html
標籤:
