为什么这个语法List.Add(item); {//一些代码}

时间:2014-02-13 11:32:36

标签: c#

我正在阅读this sample code并在向List

添加项目时找到了此语法
myList.Add(item);
{
   //some code
}

我想知道为什么使用这个以及有什么兴趣?

在链接的示例代码中,Graph方法中的相关类CreateEdge是此方法的摘录:

edge.SourceVertex.Neighbours.Add(edge.TargetVertex);
{
    var key = GetKey(edge.SourceVertex.ID, edge.TargetVertex.ID);
    if (!mEdges.ContainsKey(key))
    {
        mEdges.Add(key, edge);
    }
    else if (mEdges[key].Cost > edge.Cost)
    {
        mEdges[key] = edge;
    }
}

4 个答案:

答案 0 :(得分:2)

正如您提到的语句“myList.Add(item);”和分支“{}”是不同的意思。我们 不应该相互关联。如何无法访问代码内的代码  外部code.only那个案例分支是使用full.we可以说信息隐藏在一边 我希望这对你有所帮助。

var tag = new Tag()
   {
    Id=1
   };

var tags = new List<Tag>();

tags.Add(tag);
   {
    var t = tag; `//scope of t only accessible inside the branch.`
   }

tags.Add(t);`//This will cause error.`

在上述情况下,t不能从分支机构外部访问。

答案 1 :(得分:1)

这是两个单独的陈述。

myList.Add(item);  // Adds a new item to a list.

{
    // some code that always run (no conditional statement ("if", "while", etc.))
}

您通常希望通过条件来看待它:

if (someVariable = someValue)
{
    // some code
}

或者作为要添加到列表中的项目的对象初始值设定项:

myList.Add(new Item
    {
        somePropertyInItem = 5;
    });

答案 2 :(得分:1)

它什么都不做。

{}定义范围。悬挂范围完全有效。它与添加到列表中的行分开。

答案 3 :(得分:1)

{}mylist.Add(item);无关,因为最后有;符号。 (顺便说一下,我不知道自己的正确名称,是空白运算符还是什么?)。它是一个分隔符(命令?操作数?),有时候它可以作为一种nop(什么都不做)自己使用,例如,如果在循环条件中已经执行了所有需要的循环。 / p>

如果是

mylist.Add(item)
{
}

然后它们会相关(虽然这是一个语法错误),正如Grand Winney回答的那样,更有可能通过ifswitchwhile之类的运算符看到这一点,实例化类等。可能缺少哪些(图书打印错误?)。

正如Simon Whitehead回答的那样,{}将定义一个范围。事实上,它本身在代码中很有用(尽管人们很少使用它)。

使用范围本身的一个例子是拥有更多本地变量(隐藏在范围内)。

{
    var i = 123;
    // do something with i
}

{
    var i = 123; // can be declared without error
    // do something with i
}

// error
i++;