值如何在通用方法中传递?

时间:2018-09-28 15:17:57

标签: c#

根据create or replace TRIGGER "TEST_NULL" BEFORE UPDATE ON T FOR EACH ROW begin if (:old.MY_CLOB_COLUMN is not null and :new.MY_CLOB_COLUMN is null) then RAISE_APPLICATION_ERROR(-20001, 'error'); end if; END; 第3章测试题15 MCSD CERTIFICATION TOOLKIT (EXAM 70-483),我找到了答案:

How are values passed in generic methods?

但是根据我的理解,这不是事实。我可以使用带有通用参数的方法:

They are passed by reference

并按值调用它:

    public static T aaa<T>(T a)
    {
        return a ;
    }

我的理解错了吗?

UPD

原始问题/答案

int i=5;
aaa<int>(i);

1 个答案:

答案 0 :(得分:0)

与将它们传递给非泛型方法的方式完全相同。

“书中正确答案是B”

不是。正确答案取决于是否使用'ref'/ out'。这个问题要么是格式错误的,要么是上下文无关的,因为一般的回答只是“取决于”:如果在函数参数通过引用传递时使用ref / out,则通过值传递。

“按引用”和“引用类型”之间存在某些混淆。如果您考虑的是引用类型和值类型的参数,这很容易理清:

对于引用类型,参数值是对对象的引用 对于值类型,参数值是对象本身 如果将值/引用类型与按值/引用传递结合起来,则会得到4种情况:

通过值传递的

值类型-将对象的副本传递给方法 引用传递的值类型-对对象的引用传递给方法 值传递的引用类型-对对象的引用传递给方法 通过引用传递的引用类型-对对象引用的引用将传递给方法