Foreach循环检查空字符串并为其赋值c#
我不太了解Foreach循环 我有4个字符串变量,我将app.config中的加密值存储在这些变量文件中。我的工作是检测这4个变量中是否有数据。即使其中一个变量没有值,我也希望将默认加密值传递给它。我开始这样做Foreach循环检查空字符串并为其赋值c#,c#,encryption,foreach,C#,Encryption,Foreach,我不太了解Foreach循环 我有4个字符串变量,我将app.config中的加密值存储在这些变量文件中。我的工作是检测这4个变量中是否有数据。即使其中一个变量没有值,我也希望将默认加密值传递给它。我开始这样做 string EncValue = oEncrypt.EncryptBase64String("NO Data Found"); UpdateOrCreateAppSetting("UserName", ref MPScmUserName); UpdateOrCreateAppSetti
string EncValue = oEncrypt.EncryptBase64String("NO Data Found");
UpdateOrCreateAppSetting("UserName", ref MPScmUserName);
UpdateOrCreateAppSetting("Password", ref MPScmPassword);
UpdateOrCreateAppSetting("DBUserName", ref MPDbUserName);
UpdateOrCreateAppSetting("DBPassword", ref MPDbPassword);
var list5 = from docs in doc1.Descendants("appender").Elements()
where docs.Name == "file"
select docs;
var element5 = list5.FirstOrDefault();
MPLoadAppConfig = appConfigFile1;
MPErrorLog = element5.Attribute("value").Value;
string[] namesArray = new string[] {
MPScmUserName,MPScmPassword,MPDbUserName,MPDbPassword};
foreach (string i in namesArray)
{
if (i is string)
{
if (i == "")
{
i = EncValue.ToString();
}
}
}
如何将默认加密值分配给该数组中的空字符串。请帮帮我 您不需要说
if(i是字符串)
,因为它已经是字符串了
在另一个if
块中,您可以说
if(string.IsNullOrEmpty(i))
{
}
或者您可以使用:
string[] arr = new string[] { "","A"};
for (int i = 0; i < arr.Length; i++)
{
if (string.IsNullOrEmpty(arr[i]))
{
arr[i] = "Hello";
}
}
string[]arr=新字符串[]{”,“A”};
对于(int i=0;i
不需要if(i是字符串)
部分,因为您已经知道它是字符串。您可能还应该使用string.IsNullOrWhiteSpace()代码>以测试空字符串
编辑(无耻地抄袭自):
for(int i=0;i
您不能在foreach
循环中修改变量。您的代码应给出以下编译错误:
无法分配给“i”,因为它是“foreach迭代变量”
您可以使用LINQ执行此操作:
namesArray = namesArray.Select(s => s == "" ? EncValue.ToString() : s).ToArray();
或者,您可以使用一个简单的for
循环:
for (int i = 0; i < namesArray.Length; ++i)
{
if (namesArray[i] == "")
{
namesArray[i] = EncValue.ToString();
}
}
for(int i=0;i
在字符串数组上循环并更改当前字符串的值并不意味着您正在更改数组中字符串的值。当foreach在数组上循环时,它在i
中返回一个新的字符串实例,因此更改i
不会更改namesArray中的值。
您需要一个带有索引器的传统for循环来直接访问namesArray
for(int i = 0; i < namesArray.Length; i++)
{
if (namesArray[i] == string.Empty)
{
namesArray[i] = EncValue.ToString();
}
}
for(int i=0;i
首先,您不需要if(i是string)
,因为它是一个字符串数组。它们必须是字符串。然后,我将用if(String.IsNullOrEmpty(I))
替换if(I==“”)
。但从结构上看,我看不出这有任何其他问题。。您遇到的问题是什么?好的……如果其中一个字符串为空,如何设置解除UALT值?使用for循环,正如我给出的示例。如果其中一个字符串为空,如何设置解除UALT值?请在for
循环中告诉我。Linq选项可能不可用,这取决于他所使用的.NET framework的版本。但是Linq版本非常优雅。我需要一门关于林克的课程。你有空吗马克?:)
string[] newNamesArray =
Enumerable.Select(namesArray, s => s == "" ? EncValue : s).ToArray();
for(int i = 0; i < namesArray.Length; i++)
{
if (namesArray[i] == string.Empty)
{
namesArray[i] = EncValue.ToString();
}
}