如何从我调用的方法中获取值? C#
How can I get a value from a method I called? C#
我想从调用的方法中获取字符串的值,这样我就可以使用 InnerHtml 创建列表。
这是一个示例代码。
protected void Button1_Click(object sender, EventArgs e)
{
//MailBorrow();
int count = 0;
string[] names = new string[30];
SqlCommand cmdgetnames = new SqlCommand("SELECT Distinct[names] FROM Employees", MyConN);
using (SqlDataReader ReadeR = cmdgetnames.ExecuteReader())
while (ReadeR.Read())
{
names[count] = ReadeR[0].ToString();
count++;
}
foreach (string person in names)
{
Method(person);
Sample.InnerHtml += **INEEDTHISBACK**;
}
}
private void Method(string person)
{
string html = "<h2>"+ person +",</h2>";
SqlCommand cmdgetforPM = new SqlCommand("SELECT [tools] FROM Equipment WHERE owner = '" + person + "'", MyConN);
using (SqlDataReader ReadeR = cmdgetforPM.ExecuteReader())
while (ReadeR.Read())
{
html+= "<p>"+ Reader[tools].ToString() +"</p><br />"
}
**INEEDTHISBACK** = html;
}
我是新来的,如果您认为我的编码不好,请多多指教。
谢谢! :-)
为什么不呢?将 return 类型更改为 string
和 return 您生成的值。您还需要注意的是,
- SQL 查询执行:- 您选择了执行查询的最差方法。利用参数化来执行此类串联查询。
- 使用
StringBuilder
代替字符串
修改后的方法如下所示:
private string Method(string person)
{
StringBuilder htmlBuilder = new StringBuilder();
string querySql ="SELECT [tools] FROM Equipment WHERE owner = @person";
using (SqlCommand cmdSql = new SqlCommand(querySql, conObject))
{
cmdSql.Parameters.Add("@person", SqlDbType.VarChar).Value = person;
using (SqlDataReader reader = cmdSql.ExecuteReader())
{
htmlBuilder.Append("<h2>"+ person +",</h2>");
while (reader.Read())
{
htmlBuilder.Append("<p>"+ reader[tools].ToString() +"</p><br />");
}
}
}
return htmlBuilder.ToString();
}
在调用方法中也可以使用stringBuilder代替string,从而避免连续修改innetHtml文本。调用方式变化如下:
StringBuilder innerHtml = new StringBuilder();
foreach (string person in names)
{
innerHtml.Append(Method(person));
}
Sample.InnerHtml = innerHtml.ToString();
首先将方法的签名更改为 return 字符串
private string Method(string person)
{
string html = "<h2>"+ person +",</h2>";
SqlCommand cmdgetforPM = new SqlCommand("SELECT [tools] FROM Equipment WHERE owner = '" + person + "'", MyConN);
using (SqlDataReader ReadeR = cmdgetforPM.ExecuteReader())
while (ReadeR.Read())
{
html+= "<p>"+ Reader[tools].ToString() +"</p><br />"
}
return html;
}
然后使用它:
Sample.InnerHtml += Method(person);
可以将它传递给另一个方法吗?
Class.MyMethod(html);
你的方法:
public static string MyMethod(string input)
{
// do whatever here
return input;
}
方法有一个 return 类型。当前您的方法使用 void
,这没有任何意义。将其替换为 string
和 return,将 html 替换为 return
关键字。
请阅读以下有关 C# 中 return 关键字的文档。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/return
另一种解决方案是使用输出参数。
我想从调用的方法中获取字符串的值,这样我就可以使用 InnerHtml 创建列表。
这是一个示例代码。
protected void Button1_Click(object sender, EventArgs e)
{
//MailBorrow();
int count = 0;
string[] names = new string[30];
SqlCommand cmdgetnames = new SqlCommand("SELECT Distinct[names] FROM Employees", MyConN);
using (SqlDataReader ReadeR = cmdgetnames.ExecuteReader())
while (ReadeR.Read())
{
names[count] = ReadeR[0].ToString();
count++;
}
foreach (string person in names)
{
Method(person);
Sample.InnerHtml += **INEEDTHISBACK**;
}
}
private void Method(string person)
{
string html = "<h2>"+ person +",</h2>";
SqlCommand cmdgetforPM = new SqlCommand("SELECT [tools] FROM Equipment WHERE owner = '" + person + "'", MyConN);
using (SqlDataReader ReadeR = cmdgetforPM.ExecuteReader())
while (ReadeR.Read())
{
html+= "<p>"+ Reader[tools].ToString() +"</p><br />"
}
**INEEDTHISBACK** = html;
}
我是新来的,如果您认为我的编码不好,请多多指教。 谢谢! :-)
为什么不呢?将 return 类型更改为 string
和 return 您生成的值。您还需要注意的是,
- SQL 查询执行:- 您选择了执行查询的最差方法。利用参数化来执行此类串联查询。
- 使用
StringBuilder
代替字符串
修改后的方法如下所示:
private string Method(string person)
{
StringBuilder htmlBuilder = new StringBuilder();
string querySql ="SELECT [tools] FROM Equipment WHERE owner = @person";
using (SqlCommand cmdSql = new SqlCommand(querySql, conObject))
{
cmdSql.Parameters.Add("@person", SqlDbType.VarChar).Value = person;
using (SqlDataReader reader = cmdSql.ExecuteReader())
{
htmlBuilder.Append("<h2>"+ person +",</h2>");
while (reader.Read())
{
htmlBuilder.Append("<p>"+ reader[tools].ToString() +"</p><br />");
}
}
}
return htmlBuilder.ToString();
}
在调用方法中也可以使用stringBuilder代替string,从而避免连续修改innetHtml文本。调用方式变化如下:
StringBuilder innerHtml = new StringBuilder();
foreach (string person in names)
{
innerHtml.Append(Method(person));
}
Sample.InnerHtml = innerHtml.ToString();
首先将方法的签名更改为 return 字符串
private string Method(string person)
{
string html = "<h2>"+ person +",</h2>";
SqlCommand cmdgetforPM = new SqlCommand("SELECT [tools] FROM Equipment WHERE owner = '" + person + "'", MyConN);
using (SqlDataReader ReadeR = cmdgetforPM.ExecuteReader())
while (ReadeR.Read())
{
html+= "<p>"+ Reader[tools].ToString() +"</p><br />"
}
return html;
}
然后使用它:
Sample.InnerHtml += Method(person);
可以将它传递给另一个方法吗?
Class.MyMethod(html);
你的方法:
public static string MyMethod(string input)
{
// do whatever here
return input;
}
方法有一个 return 类型。当前您的方法使用 void
,这没有任何意义。将其替换为 string
和 return,将 html 替换为 return
关键字。
请阅读以下有关 C# 中 return 关键字的文档。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/return
另一种解决方案是使用输出参数。