C# 如何在c中基于条件显示和隐藏属性键和值#
我有以下三个属性的类C# 如何在c中基于条件显示和隐藏属性键和值#,c#,asp.net,asp.net-mvc,c#-4.0,C#,Asp.net,Asp.net Mvc,C# 4.0,我有以下三个属性的类 public class Item { public float a { get; set; } public float b { get; set; } public float c { get; set; } } 下面是我需要类项的返回类型的方法,它不应该包含默认值或空值。我怎样才能做到这一点 class Program { static void Main(string[] args) { List<It
public class Item
{
public float a { get; set; }
public float b { get; set; }
public float c { get; set; }
}
下面是我需要类项的返回类型的方法,它不应该包含默认值或空值。我怎样才能做到这一点
class Program
{
static void Main(string[] args)
{
List<Item> callingprogram = CallIngprogram1();
callingprogram2(callingprogram);
}
private static List<Item> callingprogram2(List<Item> paramss )
{
if (paramss[0].c == 0.0)
{
// return the list which should not contain the property C. IF the value is null or default value that property value should not return
}
return null;
}
private static List<Item> CallIngprogram1()
{
List<Item> list = new List<Item>();
list.Add(new Item
{
a = 1,
b = 3
// c value is not assign so it contain the default value
});
return list;
}
}
类程序
{
静态void Main(字符串[]参数)
{
List callingprogram=CallIngprogram1();
调用程序2(调用程序);
}
私有静态列表调用程序2(列表参数)
{
if(参数[0].c==0.0)
{
//返回不应包含属性C的列表。如果该值为null或默认值,则该属性值不应返回
}
返回null;
}
私有静态列表调用程序1()
{
列表=新列表();
列表。添加(新项目)
{
a=1,
b=3
//c值未赋值,因此它包含默认值
});
退货清单;
}
}
假设我给所有三个属性赋值,所有三个属性都应该返回。如果我没有为任何属性名赋值,那么value不应该返回。在定义类之前,它的任何实例都将包含所有属性。问题是如何使用这个实例。可能需要更改使用实例的逻辑 c#中浮点的默认值为0。您可以将此逻辑放入调用程序2()。如果分配了所有值,则返回a、b、c;如果未分配c,则返回a、b: 编辑:
private static List<dynamic> callingprogram2(List<Item> paramss)
{
dynamic newList = new List<dynamic>();
foreach (var item in paramss)
{
dynamic dObject = new ExpandoObject();
dObject.a = item.a;
dObject.b = item.b;
if (item.c != 0.0)
{
dObject.c = item.c;
}
newList.Add(dObject);
}
return newList;
}
私有静态列表调用程序2(列表参数)
{
动态newList=newList();
foreach(参数中的变量项)
{
动态对象=新的ExpandoObject();
dObject.a=项目a;
dObject.b=项b;
如果(项目c!=0.0)
{
dObject.c=项c;
}
newList.Add(dObject);
}
返回newList;
}
你的问题没有意义。默认值与显式将0.0
分配给属性没有区别。我关心的是,如果我将值分配给a和b属性,则返回类型应仅包含a和b参数。我不需要在返回值中使用c,因为它有默认值。我不明白你的意思。请用样品详细说明。但我担心的是,如果我给a和b属性赋值,返回类型应该只包含a和b参数。我不需要在返回值中使用c,因为它具有默认值@San Jaisy(如果我正确理解您的问题),在您的示例中,您希望返回一个不包含属性c的项。在您返回类Item的实例之前,它将包含该类中定义的所有属性。因此,您可以做的是像上面的示例一样返回动态对象。我关心的是,如果我为a和b属性赋值,则返回类型应该只包含a和b参数。我不需要在返回值中使用c,也不需要在列表中输入键,因为它有默认值。我不需要空返回值。@c#中的San Jaisy无法在运行时删除属性,因为元数据在程序集中是固定的。如果你需要创建动态属性,那么你应该使用Expandoobjectu你能告诉我如何通过ExpandObjects实现这一点吗感谢龙神我需要用这种方式…@San Jaisy很高兴能帮助你。。祝你好运