创建新方法c#methodname <variable>(Variable)</variable>

时间:2014-10-09 00:50:31

标签: c# methods

我在c#中发现了一些类似ReadAsAsync<T>(this HttpContent content);的方法,我不知道那是什么方法,而且我脑子里有问题弹出

  

“可以创建这样的方法   'methodName<varible>(variable){}'并且此方法是否存在于某个地方?“

例如:

public void methodName<string getText>(string text)
{
    getText = text;
} 

当我打电话给方法时:

string sampleText;
methodName<sampleText>("Hello World");

因此sampleText的值将变为"Hello World"

我知道这种方法没用,因为你可以像这样设置sampleText的值

string sampleText = "";

但我只是想做一些实验,谢谢。

3 个答案:

答案 0 :(得分:1)

  

我在c#中发现了一些类似ReadAsAsync<T>(this HttpContent content);的方法,我不知道那是什么方法,而且我脑子里有问题弹出

这是通用方法。你可以通过指定你想要的类型来调用它:

Foo result = await response.Content.ReadAsAsync<Foo>();

您可以在MSDN上阅读更多相关信息:Generics

  

“可以创建类似'methodName(variable){}'的方法,并且这个方法是否存在于某个地方?”

不,你想做的事情是不可能的。 <...>之间的内容是类型,而不是变量。

答案 1 :(得分:1)

正如Thomas Levesque所说,ReadAsAsync<T>(this HttpContent content)是一种通用方法,可以根据T类型参数以不同类型运行。

  

因此,sampleText的值将变为&#34; Hello World&#34;。

如果您正在寻找的话,请使用ref参数。

public void methodName(string text, ref string getText)
{
    getText = text;
} 

使用方法:

string sampleText;
methodName("Hello World", ref sampleText);

答案 2 :(得分:1)

您正在查看的是Generic Method。他们习惯于重用代码库中包含的逻辑,您在这些尖括号中看到的内容就是Type Parameter

Type Parameters用于return指定的Type,或者用于指定参数的类型。

例如,让我们说我们想要在名为User的类中获取属性的名称

public IEnumerable<string> GetUserProperties()
{
    return typeof(User).GetProperties().Select(property => property.Name);
}

public class User
{
    public string UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

上面代码的问题在于我们无法将其重用于其他类型,比如说我们也希望获得名为Type的{​​{1}}的属性,我们会不断创建新方法以获取任何给定School

的属性
Type

要解决此问题,我们使用public IEnumerable<string> GetSchoolProperties() { return typeof(School).GetProperties().Select(property => property.Name); } public class School { public string SchoolId { get; set; } public string Name { get; set; } } ,这种方法不仅限于一个Generic Method(虽然约束可以应用于类型参数,但它们在外面一分钟的范围,只是试着先把你的思想包围起来)

Type