C# - 匿名对象作为 'out' 参数?
C# - Anonymous object as 'out' parameter?
我正在尝试使匿名对象成为 'out' 参数。
此代码编译:
public T GenericTest<T>(T Input)
{
return Input;
}
public void AnonymousObjectTest()
{
var AnonObj = new { Prop = "hello" };
var Str = GenericTest(AnonObj).Prop;
Console.WriteLine(Str); //outputs "hello" to the console
}
但是,我怎样才能让它发挥作用?请参阅以下内容。我正在尝试使用匿名对象作为方法“OutParamTest”的 'out' 参数。
老实说,它应该与返回泛型类型 T 没有任何不同,因为该方法的输出类型被声明为与输入相同。但是,除了方法调用中的 'object' 之外,我不知道要使用哪种类型:
public void OutParamTest<T>(T Input, out T Output)
{
Output = Input;
}
public void AnonymousObjectTest()
{
var AnonObj = new { Prop = "hello" };
OutParamTest(AnonObj, out object Test); //how can I make the 'out' parameter type the same as the 'input' parameter?
var Str = Test.Prop; //CS1061: 'object' does not contain a definition for 'Prop'
Console.WriteLine(Str);
}
您可以:
var obj = new { A = 1 };
OutParamTest(obj, out var obj2);
使用 C# 3.0 中引入的完全用于匿名类型的 var
,而 C# 7.0 中的 var
可以与 out
.
内联
在较旧的 C# 编译器上,您还可以:
var obj = new { A = 1 };
var obj2 = obj;
OutParamTest(obj, out obj2);
(作为引用类型的匿名类型,var obj2 = obj
很便宜)
你可以试试动态类型。
public static void OutParamTest<T>(T Input, out T Output)
{
Output = Input;
}
public static void AnonymousObjectTest()
{
var AnonObj = new { Prop = "hello" };
OutParamTest(AnonObj, out dynamic Test);
var Str = Test.Prop;
Console.WriteLine(Str);
}
对于 Dynamic 类型,您可以访问 Type 中的 Prop。
我正在尝试使匿名对象成为 'out' 参数。
此代码编译:
public T GenericTest<T>(T Input)
{
return Input;
}
public void AnonymousObjectTest()
{
var AnonObj = new { Prop = "hello" };
var Str = GenericTest(AnonObj).Prop;
Console.WriteLine(Str); //outputs "hello" to the console
}
但是,我怎样才能让它发挥作用?请参阅以下内容。我正在尝试使用匿名对象作为方法“OutParamTest”的 'out' 参数。
老实说,它应该与返回泛型类型 T 没有任何不同,因为该方法的输出类型被声明为与输入相同。但是,除了方法调用中的 'object' 之外,我不知道要使用哪种类型:
public void OutParamTest<T>(T Input, out T Output)
{
Output = Input;
}
public void AnonymousObjectTest()
{
var AnonObj = new { Prop = "hello" };
OutParamTest(AnonObj, out object Test); //how can I make the 'out' parameter type the same as the 'input' parameter?
var Str = Test.Prop; //CS1061: 'object' does not contain a definition for 'Prop'
Console.WriteLine(Str);
}
您可以:
var obj = new { A = 1 };
OutParamTest(obj, out var obj2);
使用 C# 3.0 中引入的完全用于匿名类型的 var
,而 C# 7.0 中的 var
可以与 out
.
在较旧的 C# 编译器上,您还可以:
var obj = new { A = 1 };
var obj2 = obj;
OutParamTest(obj, out obj2);
(作为引用类型的匿名类型,var obj2 = obj
很便宜)
你可以试试动态类型。
public static void OutParamTest<T>(T Input, out T Output)
{
Output = Input;
}
public static void AnonymousObjectTest()
{
var AnonObj = new { Prop = "hello" };
OutParamTest(AnonObj, out dynamic Test);
var Str = Test.Prop;
Console.WriteLine(Str);
}
对于 Dynamic 类型,您可以访问 Type 中的 Prop。