我在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 = "";
但我只是想做一些实验,谢谢。
答案 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