(C#)访问/修改列表中的对象

时间:2016-09-25 01:04:35

标签: c# list oop

新来的,我已经学习了大约一个月的时间。

无论如何,我现在已经在StackOverflow上搜索了几天而且找不到我问题的具体答案......

//Here's my Class

public class Guy
{
     public static int ID { get; set; }
     public static int LifeExpectancy { get; set; }
     public static bool Living { get; set; }

     public Guy(int id, int lifeExpectancy, bool living)
     {
         ID = id;
         LifeExpectancy = lifeExpectancy;
         Living = living;
     }
}

我想要做的是创建一个特定数量的" someGuy"然后使用此方法将对象放入公共列表...

public static List<Guy> Guys = new List<Guy>();

public static void makeSomeGuys(int howManyGuys)
{
    for (int i = 0, i <= howManyGuys; i++)
    {
        int id = i;
        int lifeExpectancy = 80;
        bool alive = true;

        Guys.Add(New Guy(id, lifeExpectancy, alive));

        Console.WriteLine("Made a new Guy {0}", id);         
    }
    return; 
}

按重要性排列的问题:

如何访问特定对象及其参数? (从列表中访问&#34;伙计&#34;。)

如何从另一个类的此列表中访问对象? (不是我绝对需要,我很好奇)

我可以使用其参数搜索列表中的对象吗? (与执行类似...... humanPopulation[number]

我应该为已修改参数的对象创建新列表吗? (而不是将其保留在原始列表中)

是否可以从列表中删除项目? (一般情况下,这是人们做的事情吗?如果有,为什么?)

我真的只需要回答第一个问题。其余的只是奖金。谢谢!

3 个答案:

答案 0 :(得分:3)

首先,您需要从Guy类的属性中删除 static 修饰符,即:

public int ID { get; set; }
public int LifeExpectancy { get; set; }
public bool Living { get; set; }

因为静态导致属性成为类本身的属性,而不是类的实例(个体&#39;伙伴&#39;)。

要获得第一个人(第0个人)的预期寿命:

Console.WriteLine(Guys[0].LifeExpectancy);

要获得第五个人的预期寿命:

Console.WriteLine(Guys[4].LifeExpectancy);

答案 1 :(得分:0)

你可能不熟悉C#和OO编程,所以我在这个答案中加入了一些很好的链接。

仅针对问题1:

首先,您的Guy类属性未正确封装。确保正确确定IDLifeExpectancyLiving属性的范围,如this文章所示。

如果您想要访问特定的项目,即具有特定ID的Guy,您最好使用像{{3}这样的关联容器}。

如果您对List容器感到满意,则需要在Guys上使用Dictionary方法,如链接中的示例所示。您会在文档中注意到 Predicate 一词,Find链接会详细说明。

答案 2 :(得分:0)

CREATE TRIGGER SAMPLE_NAME
ON [dbo].[QC]
AFTER INSERT, UPDATE
AS
    Update QC Set [CQ].quest_field_key = 
            Case When [QC].field_key != 'blank_blank' And [QC].status = 1 Then CONVERT(NVARCHAR(8), [CQ].quest_id)+'_'+RIGHT('000'+ CAST([CF].field_no AS VARCHAR(3)),3)
                 Else CONVERT(NVARCHAR(8), [QC].quest_id)+'_'+RIGHT('000'+ CAST(no AS VARCHAR(3)),3)+'b'
                 End
        From [dbo].[QC]
        INNER JOIN query_field QF ON [QC].field_key = [QF].field_key
        INNER JOIN inserted I On I.(your match key) = QC.(your match key)

END;