我在为作业创建成功的LINQ语句时遇到麻烦。我不断收到相同的错误:“字符串”不包含的定义,找不到可以接受的扩展方法,该方法接受类型为“字符串”的第一个参数(是否缺少using指令或程序集引用?)
我已经对LINQ语句进行了几次编辑,并且还查找了一些示例。也许只是缺乏理解,但是我正在写的“ UppercaseWords”语句继续出现相同的错误。在尝试了我收集的大多数事情后,发现了错误,然后我发现下一个最好的事情就是问问自己。
using System;
using System.Linq;
using System.Collections.Generic;
//using System.Configuration;
namespace Assignment6
{
public class Program
{
public static void Main(string[] args)
{
string UserInput;
List<string> ListOfWords = new List<string>();
ListOfWords.Add("");
Console.Write(" Enter First Name: ");
UserInput = Console.ReadLine();
ListOfWords.Add(UserInput);
Console.Write(" Enter Last Name: ");
UserInput = Console.ReadLine();
ListOfWords.Add(UserInput);
Console.Write(" Enter Street: ");
UserInput = Console.ReadLine();
ListOfWords.Add(UserInput);
Console.Write(" Enter City: ");
UserInput = Console.ReadLine();
ListOfWords.Add(UserInput);
Console.Write(" Enter State: ");
UserInput = Console.ReadLine();
ListOfWords.Add(UserInput);
Console.Write(" Enter Zip: ");
UserInput = Console.ReadLine();
ListOfWords.Add(UserInput);
var ProcessedOut =
from word in ListOfWords
let uppercaseString = word.UppercaseWords()
select uppercaseString;
foreach (var word in ProcessedOut)
Console.Write("{0}", word);
Console.WriteLine();
}
//string being passed in is a word or phrase
public static string UppercaseWords(string value)
{
//make an array from character in word
//takes each letter from the word to create an array element
char[] array = value.ToCharArray();
if (array.Length >= 1)
{
if (char.IsLower(array[0]))
{
array[0] = char.ToUpper(array[0]);
}
}
for (int i = 1; i < array.Length; i++)
{
if (array[i - 1] == ' ')
{
if (char.IsLower(array[i]))
{
array[i] = char.ToUpper(array[i]);
}
}
}
return new string(array);
}
}
我希望输出的每个数据都在每个单词的开头加上大写字母。
我必须为分配包含“公共静态字符串UppercaseWords(字符串值)”下的所有代码。
在此先感谢您能提供帮助的人。
答案 0 :(得分:1)
如果您要创建扩展方法,则需要执行以下操作
public static class Word
{
//string being passed in is a word or phrase
public static string UppercaseWords(this string value)
{
//make an array from character in word
//takes each letter from the word to create an array element
char[] array = value.ToCharArray();
if (array.Length >= 1)
{
if (char.IsLower(array[0]))
{
array[0] = char.ToUpper(array[0]);
}
}
for (int i = 1; i < array.Length; i++)
{
if (array[i - 1] == ' ')
{
if (char.IsLower(array[i]))
{
array[i] = char.ToUpper(array[i]);
}
}
}
return new string(array);
}
}
答案 1 :(得分:0)
您要在UpperCaseWords()
上调用word
,因此它将在默认的string
方法库中查找该方法(请参见{{ 3}})。
您的方法没有扩展string
类(将自己的方法添加到string
的库中),并且它被声明为static
,因此您可以像这样简单地调用它:
var ProcessedOut =
from word in ListOfWords
let uppercaseString = UppercaseWords(word)
select uppercaseString;
static
表示该方法属于自身而不是特定的对象实例,因此可以独立调用(如上所述),并且在您的情况下,它期望将字符串作为参数,因此我们将其命名为{{1 }}。