Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中基于条件显示和隐藏属性键和值#_C#_Asp.net_Asp.net Mvc_C# 4.0 - Fatal编程技术网

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很高兴能帮助你。。祝你好运