关键字ref在C#中意味着什么?

时间:2011-08-18 12:36:19

标签: c# .net

下面是我的代码,请解释什么是ref cboListType。

Lists.LoadListTypes(ref cboListType);

public static void LoadListTypes(ref DropDownList dropDown)
{
    if (!Util.IsCached(LIST_TYPES))
    {
        Util.InsertIntoCache(LIST_TYPES, DataAccess.ListListTypes());
    }

    dropDown.DataSource = (DataTable)Util.GetFromCache(LIST_TYPES);
    dropDown.DataBind();
    dropDown.Items.Insert(0, new ListItem("", ""));
}

7 个答案:

答案 0 :(得分:3)

ref keyword表示参数通过引用传递。

在您发布的代码中,它完全没用,因为该方法不会更改参数的值(更改参数的属性不需要通过引用传递它,至少不是它是引用类型)

答案 1 :(得分:2)

ref关键字表示“按引荐传递”。当您将DropDownList引用传递给LoadListTypes()时,此引用可能会更改。因此,在此调用之后,您传递的引用可能完全引用另一个对象。

void func(ref MyClass mc)
{
  mc = new MyClass(2);
}

MyClass mc = new MyClass(1);
MyClass mc2 = mc;
// mc and mc2 are the same
func(ref mc);
// mc and mc2 may differ

答案 2 :(得分:1)

C#ref关键字使方法引用传递给方法的同一变量。当控制权被传回时,对该变量所做的任何更改都会反映在该变量中。

答案 3 :(得分:1)

我认为这是一个System.Web.UI.WebControls.DropDownList,几乎肯定不应该声明参考。

答案 4 :(得分:1)

  

请参阅传递给方法的相同DropDownList。

Here了解详情。

答案 5 :(得分:0)

ref 表示参数是通过引用传递的,而不是通过值传递的。 More detailed info

答案 6 :(得分:0)

From MSDN

  

方法参数上的ref方法参数关键字会导致方法   引用传递给方法的相同变量。任何   对方法中的参数所做的更改将反映在该方法中   当控制传递回调用方法时变量。