如何在另一个私有方法中使用私有方法中的变量?C#ASPX



所以我有一个带有私有方法的类,我想从一个方法到另一个方法使用一个变量。我不知道该怎么开始,从哪里开始。我应该使用get和set还是a创建一个完整的公共方法,我不知道。

这是第一种方法,我想使用变量"prixTotal">

private string RecupPrixTransaction(XmlDocument doc)
{
XmlNodeList nl = null;
XmlNode nodeDevise = null;
string data = string.Empty;
string devise = string.Empty;
decimal acompteTotal = 0;
decimal prixTotal = 0;
if (doc == null)
return (data);
nodeDevise = doc.SelectSingleNode("/Caddie/GroupesProduits/GroupeProduit[@IdGroupe='" + this.guid + "']/Devise");
if (nodeDevise == null)
return (data);
devise = nodeDevise.InnerText;
nl = doc.SelectNodes("/Caddie/GroupesProduits/GroupeProduit[@IdGroupe='" + this.guid + "']/Produits/Produit");
if (nl == null)
return (data);
try
{
foreach (XmlNode nd in nl)
{
prixTotal += decimal.Parse(nd["PrixTotal"].InnerText, System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
acompteTotal += decimal.Parse(nd["AcompteTotal"].InnerText, System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
}
data += "Prix total de la transaction: <strong>" + prixTotal + "</strong> " + devise + "<br />";
data += "Acompte total payé: <strong>" + acompteTotal + "</strong> " + devise + "<br />";
}
catch (Exception)
{
data += "Prix/acompte invalide.<br />";
}
return (data);
}

这里是我想要使用变量"prixTotal"的方法

private void AffTransa(string id, SqlConnection sqlConnect)
{
SqlDataReader reader = null;
decimal recapPrixTotal = RecupPrixTransaction(prixTotal);

reader = Database.ExecuteReader(EnumConstant.SqlLecture + "SELECT * FROM transactionfin WHERE IdTransactionFin='" + id + "'", sqlConnect);
if (reader.Read())
{
this.lTransa.Text = "<h2>Détail de la transaction " + id + "</h2><br />";
this.lTransa.Text += "Date de la transaction: <b>" + reader["TransactionFinDate"] + "</b><br />";
this.date = reader["TransactionFinDate"].ToString();
this.lTransa.Text += "Solution de paiement: <b>" + MyRegex.ReplacePaiementSol(reader["PaiementSolution_IdPaiementSolution"].ToString()) + "</b><br />";
this.lTransa.Text += "{[{-}]}Mode: <b>" + MyRegex.ReplaceMode(reader["TransactionFinMode"].ToString()) + "</b><br />";
this.lTransa.Text += "Etat: <b>" + MyRegex.ReplaceEtat(reader["TransactionFinEtat"].ToString()) + "</b><br />";
if (reader["TransactionFinUrlRetour"].ToString() != "&nbsp;")
this.lTransa.Text += "Url de retour: <a href="" + reader["TransactionFinUrlRetour"].ToString() + "">" + MyRegex.ReplaceUrlRetour(reader["TransactionFinUrlRetour"].ToString()) + "</a><br />";
this.lTransa.Text += "<br /><br />Id Transaction: <b>" + reader["TransactionFinIdTransaction"] + "</b><br />";
this.lTransa.Text += "Guid: <b>" + reader["TransactionFinGuidGroupe"].ToString() + "</b><br />";
this.guid = reader["TransactionFinGuidGroupe"].ToString();
this.lTransa.Text += "Id action contact: <b>" + reader["ActionContact_IdActionContact"] + "</b><br />";
this.lTransa.Text += "Id vente entete: <b>" + reader["VenteEntete_IdVenteEntete"] + "</b><br />";
if (reader["TransactionFinDetail"] != null && reader["TransactionFinDetail"].ToString() != string.Empty)
{
this.tbTransa.Visible = true;
this.tbTransa.Text = XmlParsing.IndentXml(reader["TransactionFinDetail"].ToString()); 
this.lRecap.Text += "Recapitulatif de la Transaction : " ;
this.recapTransa.Visible = true;
this.recapTransa.Text += "#Fournisseur" + "n" +
"#Internaute" + "n" +
"#Montants" + "n" + recapPrixTotal +
"#Produits" + "n" +
"#Suppléments" + "n";
}
}
reader.Close();
}

我试着这样调用方法,但这不起的作用

decimal recapPrixTotal = RecupPrixTransaction(prixTotal);

编辑:

在类的顶部,我放置了变量"prixTotal",如

public partial class SeeDetail : System.Web.UI.Page
{
private decimal prixTotal = 0; 
...
}

我已将其从RecupPrixTransaction方法中删除在AffTransa方法中,我称之为

decimal recapPrixTotal = prixTotal;

在RecupPrixTransaction方法中,"prixTotal"的结果是好的但在AffTransa方法中,数字总是0

感谢您的帮助;(

这样是不可能的。现在prixTotal在方法范围内,从外部无法访问。但是您可以将decimal prixTotal = 0;移动到类范围,然后可以从两个方法访问该变量。

Class A
{
private decimal prixTotal = 0;
private void Method A ....
}

我试着这样调用方法,但不起作用decimal-recapPrixTotal=RecupPrixTransaction(prixTotal(;

  • RecupPrixTransaction的返回类型为String
  • RecupPrixTransaction接受的参数类型为XmlDocument,而不是decimal

要解决:

  • 作用域声明private decimal prixTotal { get; set; }
  • private string RecupPrixTransaction(XmlDocument doc)
    {
    prixTotal =0;
    ...
    }
    
  • private void AffTransa(string id, SqlConnection sqlConnect)
    {
    decimal recapPrixTotal= prixTotal;
    ...
    }
    

我看不出这有什么办法。

您正在呼叫

private string RecupPrixTransaction(XmlDocument doc)

对我来说,这表明该方法是返回字符串并传递XmlDocument

但是你经过的是

decimal recapPrixTotal = RecupPrixTransaction(prixTotal);

在您想要decimal并传递(至少给我们(名为prixTotal的变量的情况下

如果您希望它返回decimal,我建议更改该方法的返回类型,假设您正在向它传递XmlDocument

如果它们在同一个类中,我不明白为什么上面的内容不会影响方法。

最新更新