当前位置: 首页 > 面试题库 >

C#vs Python参数传递

董砚
2023-03-14
问题内容

Python的参数传递规则与C#的参数传递规则的主要区别(如果有)是什么?

我对Python非常熟悉,只是开始学习C#。我想知道我是否可以想到规则集关于何时通过引用传递对象或通过值传递对象(对于C#而言,其传递方式与在Python中相同),或者是否需要记住一些关键区别。


问题答案:

C#会按值传递参数,除非您指定不同的要求。如果参数类型是结构,则将其值复制,否则将复制对对象的引用。返回值也是如此。

您可以使用reforout修饰符修改此行为,必须在方法声明和方法调用中都指定它。两者都将该参数的行为更改为通过引用。这意味着您不能再传递更复杂的表达式。ref和之间的区别在于out,当将变量传递给ref参数时,必须已经对其进行了初始化,而传递给out参数的变量则不必进行初始化。在该方法中,该out参数被视为未初始化的变量,并且必须在返回之前分配一个值。



 类似资料:
  • 本文向大家介绍C#程序将参数传递给线程,包括了C#程序将参数传递给线程的使用技巧和注意事项,需要的朋友参考一下 要使用线程,请在代码中添加以下命名空间- 首先,您需要在C#中创建一个新线程- 上面,threadDemo是我们的线程函数。 现在将参数传递给线程- 上面设置的参数是- 示例 让我们看完整的代码,以将参数传递给C#中的线程。 输出结果

  • 代码如下: 我假设错误发生在insert函数中,并且与参数初始化有关。 bintree.cpp:65:27:错误:使用删除的函数'std::unique_ptr<_tp,_dp>::unique_ptr(const std::unique_ptr<_tp,_dp>&)[with_tp=bintreenode;_dp=std::default_delete>]“tree.insert(tree.ro

  • 您可以将其他数据作为常规方法参数传递到后台任务。我再次使用下面的例子(希望没有让你厌恶): BackgroundJob.Enqueue(() => Console.WriteLine("Hello, {0}!", "world")); 在常规方法调用中,在执行后台作业期间, Console.WriteLine 方法将使用这些参数。为了参数传递进去,需要先序列化。 使用 了不起的 Newtonsof

  • 2. 传入参数与传出参数 如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的src参数是传入参数,dest参数是传出参数。有些函数的指针参数同时担当了这两种角色,如select(2)的fd_set *参数,既是传入参数又是传出参数,这称为Value-result参数。 表 24.1.

  • 本文向大家介绍C#中参数传递 ref 与 out 的区别?相关面试题,主要包含被问及C#中参数传递 ref 与 out 的区别?时的应答技巧和注意事项,需要的朋友参考一下 (1)ref指定的参数在函数调用时必须先初始化,而out不用 (2)out指定的参数在进入函数时会清空自己,因此必须在函数内部进行初始化赋值操作,而ref不用 总结:ref可以把值传到方法里,也可以把值传到方法外;out只可以把

  • 尽管应用中的大部分组件都依赖其他组件,但并不总是如此。同时 Windsor 用来查找满足依赖的正确组件的默认规则有时不得不进行调整。 如何做到这一点基于值的来源和获取值的地方。 Composition root - container.Resolve container.Resolve 方法有几个重载允许传递 IDictionary 作为参数(在这种情况下,建议使用 [Arguments] 类),