2015-11-26 33 views
1

我有三個屬性的以下類。如何根據c#中的條件顯示和隱藏屬性值和值#

public class Item 
{ 
    public float a { get; set; } 
    public float b { get; set; } 
    public float c { get; set; } 
} 

下面是我需要返回類型的Item不應該包含默認值或空值的方法。我怎樣才能做到這一點。

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; 
    } 

} 

假設我給所有三個屬性賦值,所有三個屬性應該返回。如果我沒有給任何屬性名稱賦值以及值不應該返回。

+2

你的問題就沒有意義了。默認值與爲屬性顯式賦值'0.0'沒有什麼不同。 –

+0

我的擔心是如果我爲a和b屬性賦值,返回類型應該只包含a和b參數。因爲它有默認值,所以在返回值中不需要c。 –

回答

1

c#中float的默認值是0.您可以將這個邏輯放在您的callingprogram2()中。如果所有的值賦給它會返回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; 
    } 
+0

我的擔心是如果我給a和b屬性賦值,返回類型應該只包含a和b參數。因爲它有默認值,所以我不需要返回值中的c以及列表中的鍵。我不需要空返回值。 –

+0

@San Jaisy在c#中,由於元數據在程序集中是固定的,因此無法在運行時刪除屬性。如果你需要創建動態屬性,那麼你應該使用ExpandoObject –

+0

你能告訴我如何通過Expandobject達到這個效果 –

0

在定義一個類之前,它的任何實例都將包含所有的屬性。問題是你如何使用這個實例。可能是你需要改變使用實例的邏輯。

+0

我沒有明白你的觀點。請你能詳細說明樣品。但我擔心的是,如果我爲a和b屬性賦值,則返回類型只應包含a和b參數。我不需要c的返回值,因爲它具有默認值 –

+0

@ San Jaisy如果我理解你的問題,在你的例子中你想返回一個不包含屬性C的Item。在你返回一個類Item的實例將包含此類中定義的所有屬性。所以你可以做的就是像上面的例子那樣返回動態對象。 –

相關問題